It is sometimes useful to wrap a Guard and a &V into a single type instead of requiring a Guard as input. We could add a Ref wrapper type to support this. See the advanced lifetimes guide for context.
I'm unsure how the API should look as I don't want this to be the default return type for get. We could potentially add a Ref::create method that takes a guard and a closure that creates a value tied to the guard and extends the lifetime. However, we have to be careful about not creating self references. Though this is unlikely, it would be possible to create a HashMap<K, &Guard> or similar through Ref::create, so we might have to unfortunately restrict it to 'static types.
It is sometimes useful to wrap a
Guard
and a&V
into a single type instead of requiring aGuard
as input. We could add aRef
wrapper type to support this. See the advanced lifetimes guide for context.I'm unsure how the API should look as I don't want this to be the default return type for
get
. We could potentially add aRef::create
method that takes a guard and a closure that creates a value tied to the guard and extends the lifetime. However, we have to be careful about not creating self references. Though this is unlikely, it would be possible to create aHashMap<K, &Guard>
or similar throughRef::create
, so we might have to unfortunately restrict it to'static
types.