cached
cached copied to clipboard
proc_macro: support args which are &T and Option<&T>
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 ofOption<&T>andOption<&T>.cloned()needs to be called instead ofOption<&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.