1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#[derive(Clone)] pub struct Return<T> { pub was_cached: bool, pub value: T, } impl<T> Return<T> { pub fn new(value: T) -> Self { Self { was_cached: false, value, } } } impl<T> std::ops::Deref for Return<T> { type Target = T; fn deref(&self) -> &Self::Target { &self.value } } impl<T> std::ops::DerefMut for Return<T> { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value } }