pub struct SingleValueMapper<SA, T, A = CurrentStorage>{ /* private fields */ }
Expand description
Manages a single serializable item in storage.
Implementations§
Source§impl<SA, T, A> SingleValueMapper<SA, T, A>
impl<SA, T, A> SingleValueMapper<SA, T, A>
Source§impl<SA, T> SingleValueMapper<SA, T, CurrentStorage>
impl<SA, T> SingleValueMapper<SA, T, CurrentStorage>
Sourcepub fn set<BT>(&self, new_value: BT)where
BT: Borrow<T>,
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
.
Sourcepub fn set_if_empty<BT>(&self, value: BT)where
BT: Borrow<T>,
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.
Sourcepub fn update<R, F: FnOnce(&mut T) -> R>(&self, f: F) -> R
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.
pub fn replace<BT>(&self, new_value: BT) -> Twhere
BT: Borrow<T>,
Trait Implementations§
Source§impl<SA, T> StorageMapper<SA> for SingleValueMapper<SA, T, CurrentStorage>
impl<SA, T> StorageMapper<SA> for SingleValueMapper<SA, T, CurrentStorage>
Source§fn new(base_key: StorageKey<SA>) -> Self
fn new(base_key: StorageKey<SA>) -> Self
Will be called automatically by the
#[storage_mapper]
annotation generated code.Source§impl<SA, T> StorageMapperFromAddress<SA> for SingleValueMapper<SA, T, ManagedAddress<SA>>
impl<SA, T> StorageMapperFromAddress<SA> for SingleValueMapper<SA, T, ManagedAddress<SA>>
Source§fn new_from_address(
address: ManagedAddress<SA>,
base_key: StorageKey<SA>,
) -> Self
fn new_from_address( address: ManagedAddress<SA>, base_key: StorageKey<SA>, ) -> Self
Will be called automatically by the
#[storage_mapper_from_address]
annotation generated code.Source§impl<SA, T> TopEncodeMulti for SingleValueMapper<SA, T, CurrentStorage>
impl<SA, T> TopEncodeMulti for SingleValueMapper<SA, T, CurrentStorage>
Source§fn multi_encode_or_handle_err<O, H>(
&self,
output: &mut O,
h: H,
) -> Result<(), H::HandledErr>where
O: TopEncodeMultiOutput,
H: EncodeErrorHandler,
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,
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, CurrentStorage>
impl<SA, T> TypeAbi for SingleValueMapper<SA, T, CurrentStorage>
type Unmanaged = <T as TypeAbi>::Unmanaged
fn type_name() -> TypeName
fn type_name_rust() -> TypeName
Source§fn provide_type_descriptions<TDC: TypeDescriptionContainer>(
accumulator: &mut TDC,
)
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.
fn type_names() -> TypeNames
impl<SA, T> TypeAbiFrom<SingleValueMapper<SA, T>> for PlaceholderOutput
impl<SA, T, R> TypeAbiFrom<SingleValueMapper<SA, T>> for SingleValue<R>
impl<SA, T> TypeAbiFrom<SingleValueMapper<SA, T>> for SingleValueMapper<SA, T, CurrentStorage>
Auto Trait Implementations§
impl<SA, T, A> Freeze for SingleValueMapper<SA, T, A>
impl<SA, T, A> RefUnwindSafe for SingleValueMapper<SA, T, A>where
A: RefUnwindSafe,
SA: RefUnwindSafe,
T: RefUnwindSafe,
<SA as HandleTypeInfo>::ManagedBufferHandle: RefUnwindSafe,
impl<SA, T, A> Send for SingleValueMapper<SA, T, A>
impl<SA, T, A> Sync for SingleValueMapper<SA, T, A>
impl<SA, T, A> Unpin for SingleValueMapper<SA, T, A>
impl<SA, T, A> UnwindSafe for SingleValueMapper<SA, T, A>where
A: UnwindSafe,
SA: UnwindSafe,
T: UnwindSafe,
<SA as HandleTypeInfo>::ManagedBufferHandle: 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