sp_runtime::offchain::storage

Struct StorageValueRef

source
pub struct StorageValueRef<'a> { /* private fields */ }
Expand description

An abstraction over local storage value.

Implementations§

source§

impl<'a> StorageValueRef<'a>

source

pub fn persistent(key: &'a [u8]) -> Self

Create a new reference to a value in the persistent local storage.

source

pub fn local(key: &'a [u8]) -> Self

Create a new reference to a value in the fork-aware local storage.

source

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.

source

pub fn clear(&mut self)

Remove the associated value from the storage.

source

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.

source

pub fn mutate<T, E, F>( &self, mutate_val: F, ) -> Result<T, MutateStorageError<T, E>>
where T: Codec, F: FnOnce(Result<Option<T>, StorageRetrievalError>) -> Result<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:

  1. Ok(T) in case the value has been successfully set.
  2. Err(MutateStorageError::ConcurrentModification(T)) in case the value was calculated by the passed closure mutate_val, but it could not be stored.
  3. Err(MutateStorageError::ValueFunctionFailed(_)) in case mutate_val returns 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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CheckedConversion for T

source§

fn checked_from<T>(t: T) -> Option<Self>
where Self: TryFrom<T>,

Convert from a value of T into an equivalent instance of Option<Self>. Read more
source§

fn checked_into<T>(self) -> Option<T>
where Self: TryInto<T>,

Consume self to return Some equivalent value of Option<T>. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
source§

impl<T, Outer> IsWrappedBy<Outer> for T
where Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

source§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

source§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T> SaturatedConversion for T

source§

fn saturated_from<T>(t: T) -> Self
where Self: UniqueSaturatedFrom<T>,

Convert from a value of T into an equivalent instance of Self. Read more
source§

fn saturated_into<T>(self) -> T
where Self: UniqueSaturatedInto<T>,

Consume self to return an equivalent value of T. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<S, T> UncheckedInto<T> for S
where T: UncheckedFrom<S>,

source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
source§

impl<T, S> UniqueSaturatedInto<T> for S
where T: Bounded, S: TryInto<T>,

source§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> JsonSchemaMaybe for T

source§

impl<T> MaybeRefUnwindSafe for T
where T: RefUnwindSafe,