Struct cfx_storage::utils::guarded_value::GuardedValue
source · pub struct GuardedValue<GuardType, ValueType> { /* private fields */ }
Expand description
Please read all comments in this file to prevent leaking of guarded value by accident.
Implementations§
source§impl<GuardType, ValueType> GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType> GuardedValue<GuardType, ValueType>
pub fn new(guard: GuardType, value: ValueType) -> Self
sourcepub fn into(self) -> (GuardType, ValueType)
pub fn into(self) -> (GuardType, ValueType)
It’s unsafe to drop the returned guard manually, or to clone the ValueType. Extra care is needed when using this method.
source§impl<'a, GuardType: 'a + Deref<Target = TargetType>, TargetType> GuardedValue<GuardType, NonCopy<&'a TargetType>>
impl<'a, GuardType: 'a + Deref<Target = TargetType>, TargetType> GuardedValue<GuardType, NonCopy<&'a TargetType>>
pub fn new_derefed(guard: GuardType) -> Self
source§impl<'a, GuardType: 'a + DerefMut<Target = TargetType>, TargetType> GuardedValue<GuardType, &'a mut TargetType>
impl<'a, GuardType: 'a + DerefMut<Target = TargetType>, TargetType> GuardedValue<GuardType, &'a mut TargetType>
pub fn new_derefed_mut(guard: GuardType) -> Self
source§impl<'a, GuardType> GuardedValue<GuardType, MaybeOwnedTrieNode<'a>>
impl<'a, GuardType> GuardedValue<GuardType, MaybeOwnedTrieNode<'a>>
pub fn take( x: Self ) -> GuardedValue<GuardType, MaybeOwnedTrieNodeAsCowCallParam>
source§impl<'a, GuardType> GuardedValue<GuardType, &'a TrieNodeDeltaMptCell>
impl<'a, GuardType> GuardedValue<GuardType, &'a TrieNodeDeltaMptCell>
pub fn into_wrapped(x: Self) -> GuardedValue<GuardType, MaybeOwnedTrieNode<'a>>
Trait Implementations§
source§impl<GuardType, ValueType> AsMut<ValueType> for GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType> AsMut<ValueType> for GuardedValue<GuardType, ValueType>
source§fn as_mut(&mut self) -> &mut ValueType
fn as_mut(&mut self) -> &mut ValueType
Converts this type into a mutable reference of the (usually inferred) input type.
source§impl<GuardType, ValueType> AsRef<ValueType> for GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType> AsRef<ValueType> for GuardedValue<GuardType, ValueType>
source§fn as_ref(&self) -> &ValueType
fn as_ref(&self) -> &ValueType
Converts this type into a shared reference of the (usually inferred) input type.
source§impl<GuardType, ValueType: DerefMut> DerefMut for GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType: DerefMut> DerefMut for GuardedValue<GuardType, ValueType>
source§impl<GuardType, ValueType: Deref> Deref for GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType: Deref> Deref for GuardedValue<GuardType, ValueType>
It’s safer to directly deref to the next level target, because when the ValueType is &’a Target, when we deref twice, we get &‘a Target, when we deref to the next level we always get the expected &’_ Target.
Auto Trait Implementations§
impl<GuardType, ValueType> RefUnwindSafe for GuardedValue<GuardType, ValueType>where
GuardType: RefUnwindSafe,
ValueType: RefUnwindSafe,
impl<GuardType, ValueType> Send for GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType> Sync for GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType> Unpin for GuardedValue<GuardType, ValueType>
impl<GuardType, ValueType> UnwindSafe for GuardedValue<GuardType, ValueType>where
GuardType: UnwindSafe,
ValueType: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more