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>where SA: StorageMapperApi, T: TopEncode + TopDecode,

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) -> Twhere BT: Borrow<T>,

Trait Implementations§

source§

impl<SA, T> StorageMapper<SA> for SingleValueMapper<SA, T>where SA: StorageMapperApi, T: TopEncode + TopDecode,

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>where SA: StorageMapperApi, T: TopEncode + TopDecode,

source§

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

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>where O: TopEncodeMultiOutput,

Attempt to serialize the value to ouput.
source§

impl<SA, T> TypeAbi for SingleValueMapper<SA, T>where SA: StorageMapperApi, T: TopEncode + TopDecode + TypeAbi,

source§

fn type_name() -> TypeName

source§

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

A type can provide more than its own description. 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 PlaceholderOutputwhere SA: StorageMapperApi, T: TopEncode + TopDecode,

source§

impl<SA, T, R> CodecFrom<SingleValueMapper<SA, T>> for SingleValue<R>where SA: StorageMapperApi, T: TopEncode + TopDecode, R: TopDecode + CodecFrom<T>,

source§

impl<SA, T> !CodecFromSelf for SingleValueMapper<SA, T>where SA: StorageMapperApi, T: TopEncode + TopDecode,

Auto Trait Implementations§

§

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

§

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>where SA: Unpin, T: Unpin, <SA as HandleTypeInfo>::ManagedBufferHandle: Unpin,

§

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

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere 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 Twhere 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 Iwhere I: TopEncodeMulti, F: CodecFrom<I>,