Struct multiversx_sc::storage::mappers::SingleValueMapper
source · 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,
impl<SA, T> SingleValueMapper<SA, T>where SA: StorageMapperApi, T: TopEncode + TopDecode,
sourcepub fn get_from_address(&self, address: &ManagedAddress<SA>) -> T
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.
sourcepub fn is_empty_at_address(&self, address: &ManagedAddress<SA>) -> bool
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.
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 raw_byte_length(&self) -> usize
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,
impl<SA, T> StorageMapper<SA> for SingleValueMapper<SA, T>where SA: StorageMapperApi, T: TopEncode + TopDecode,
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> TopEncodeMulti for SingleValueMapper<SA, T>where
SA: StorageMapperApi,
T: TopEncode + TopDecode,
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,
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>where
SA: StorageMapperApi,
T: TopEncode + TopDecode + TypeAbi,
impl<SA, T> TypeAbi for SingleValueMapper<SA, T>where SA: StorageMapperApi, T: TopEncode + TopDecode + TypeAbi,
fn type_name() -> 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 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.
impl<SA, T> CodecFrom<SingleValueMapper<SA, T>> for PlaceholderOutputwhere SA: StorageMapperApi, T: TopEncode + TopDecode,
impl<SA, T, R> CodecFrom<SingleValueMapper<SA, T>> for SingleValue<R>where SA: StorageMapperApi, T: TopEncode + TopDecode, R: TopDecode + CodecFrom<T>,
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> 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