jaemk / cached

Rust cache structures and easy function memoization

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

proc_macro: support args which are &T and Option<&T>

BaxHugh opened this issue · comments

The cached macro currently cannot support arg: &T out of the box, due to it's implementation which leads to borrowed data escaping the fn body, when the key type is set to &T

Also, because Option<&T>::clone() returns Option<&T> rather than an owned type, to support Option<&T> as an input requires:

  • the macro impl to call Option::cloned() instead of Option::clone().
  • The key type be Option<T> instead of Option<&T> and Option<&T>.cloned() needs to be called instead of Option<&T>.clone().

After an initial look at the problem I think here we want to call some function which goes through the input_tys and makes this conversion, noting the names of those inputs, so that we call cloned() instad of clone() on those inputs.