pub struct StorageValueRef<'a> { /* private fields */ }Expand description
An abstraction over local storage value.
Implementations§
Source§impl<'a> StorageValueRef<'a>
impl<'a> StorageValueRef<'a>
Sourcepub fn persistent(key: &'a [u8]) -> Self
pub fn persistent(key: &'a [u8]) -> Self
Create a new reference to a value in the persistent local storage.
Sourcepub fn local(key: &'a [u8]) -> Self
pub fn local(key: &'a [u8]) -> Self
Create a new reference to a value in the fork-aware local storage.
Sourcepub fn set(&self, value: &impl Encode)
pub fn set(&self, value: &impl Encode)
Set the value of the storage to encoding of given parameter.
Note that the storage may be accessed by workers running concurrently,
if you happen to write a get-check-set pattern you should most likely
be using mutate instead.
Sourcepub fn get<T: Decode>(&self) -> Result<Option<T>, StorageRetrievalError>
pub fn get<T: Decode>(&self) -> Result<Option<T>, StorageRetrievalError>
Retrieve & decode the value from storage.
Note that if you want to do some checks based on the value
and write changes after that, you should rather be using mutate.
Returns the value if stored. Returns an error if the value could not be decoded.
Sourcepub fn mutate<T, E, F>(
&self,
mutate_val: F,
) -> Result<T, MutateStorageError<T, E>>
pub fn mutate<T, E, F>( &self, mutate_val: F, ) -> Result<T, MutateStorageError<T, E>>
Retrieve & decode the current value and set it to a new value atomically.
Function mutate_val takes as input the current value and should
return a new value that is attempted to be written to storage.
This function returns:
Ok(T)in case the value has been successfully set.Err(MutateStorageError::ConcurrentModification(T))in case the value was calculated by the passed closuremutate_val, but it could not be stored.Err(MutateStorageError::ValueFunctionFailed(_))in casemutate_valreturns an error.
Auto Trait Implementations§
impl<'a> Freeze for StorageValueRef<'a>
impl<'a> RefUnwindSafe for StorageValueRef<'a>
impl<'a> Send for StorageValueRef<'a>
impl<'a> Sync for StorageValueRef<'a>
impl<'a> Unpin for StorageValueRef<'a>
impl<'a> UnwindSafe for StorageValueRef<'a>
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
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T. Read moreSource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T.