pub struct SingleValueMapper<SA, T>
where SA: StorageMapperApi, T: TopEncode + TopDecode + 'static,
{ /* private fields */ }
Expand description

Manages a single serializable item in storage.

Implementations§

source§

impl<SA, T> SingleValueMapper<SA, T>

source

pub fn get(&self) -> T

Retrieves current value from storage.

source

pub fn get_from_address(&self, address: &ManagedAddress<SA>) -> T

Gets the value from the given address. Both adresses have to be in the same shard.

source

pub fn is_empty(&self) -> bool

Returns whether the storage managed by this mapper is empty.

source

pub fn is_empty_at_address(&self, address: &ManagedAddress<SA>) -> bool

Returns whether the storage at the given key is empty at the given address. Both adresses have to be in the same shard.

source

pub fn set<BT>(&self, new_value: BT)
where BT: Borrow<T>,

Saves argument to storage.

Accepts owned item of type T, or any borrowed form of it, such as &T.

source

pub fn set_if_empty<BT>(&self, value: BT)
where BT: Borrow<T>,

Saves argument to storage only if the storage is empty. Does nothing otherwise.

source

pub fn clear(&self)

Clears the storage for this mapper.

source

pub fn update<R, F: FnOnce(&mut T) -> R>(&self, f: F) -> R

Syntactic sugar, to more compactly express a get, update and set in one line. Takes whatever lies in storage, apples the given closure and saves the final value back to storage. Propagates the return value of the given function.

source

pub fn raw_byte_length(&self) -> usize

source

pub fn take(&self) -> T

Takes the value out of the storage, clearing it in the process.

source

pub fn replace<BT>(&self, new_value: BT) -> T
where BT: Borrow<T>,

Trait Implementations§

source§

impl<SA, T> StorageMapper<SA> for SingleValueMapper<SA, T>

source§

fn new(base_key: StorageKey<SA>) -> Self

Will be called automatically by the #[storage_mapper] annotation generated code.
source§

impl<SA, T> TopEncodeMulti for SingleValueMapper<SA, T>

source§

fn multi_encode_or_handle_err<O, H>( &self, output: &mut O, h: H ) -> Result<(), H::HandledErr>

Version of top_encode that can handle errors as soon as they occur. For instance in can exit immediately and make sure that if it returns, it is a success. By not deferring error handling, this can lead to somewhat smaller bytecode.
source§

fn multi_encode<O>(&self, output: &mut O) -> Result<(), EncodeError>

Attempt to serialize the value to ouput.
source§

impl<SA, T> TypeAbi for SingleValueMapper<SA, T>

source§

fn type_name() -> TypeName

source§

fn provide_type_descriptions<TDC: TypeDescriptionContainer>( accumulator: &mut TDC )

A type can provide more than its own name. For instance, a struct can also provide the descriptions of the type of its fields. TypeAbi doesn’t care for the exact accumulator type, which is abstracted by the TypeDescriptionContainer trait.
source§

impl<SA, T> CodecFrom<SingleValueMapper<SA, T>> for PlaceholderOutput

source§

impl<SA, T, R> CodecFrom<SingleValueMapper<SA, T>> for SingleValue<R>

source§

impl<SA, T> !CodecFromSelf for SingleValueMapper<SA, T>

Auto Trait Implementations§

§

impl<SA, T> RefUnwindSafe for SingleValueMapper<SA, T>

§

impl<SA, T> Send for SingleValueMapper<SA, T>
where SA: Send, T: Send, <SA as HandleTypeInfo>::ManagedBufferHandle: Send,

§

impl<SA, T> Sync for SingleValueMapper<SA, T>
where SA: Sync, T: Sync, <SA as HandleTypeInfo>::ManagedBufferHandle: Sync,

§

impl<SA, T> Unpin for SingleValueMapper<SA, T>

§

impl<SA, T> UnwindSafe for SingleValueMapper<SA, T>

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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<F, I> CodecInto<F> for I
where I: TopEncodeMulti, F: CodecFrom<I>,