Struct ink_storage::lazy::LazyCell[][src]

pub struct LazyCell<T> where
    T: SpreadLayout
{ /* fields omitted */ }

A lazy storage entity.

This loads its value from storage upon first use.

Note

Use this if the storage field doesn’t need to be loaded in some or most cases.

Implementations

impl<T> LazyCell<T> where
    T: SpreadLayout
[src]

#[must_use]pub fn new(value: Option<T>) -> Self[src]

Creates an already populated lazy storage cell.

Note

Since this already has a value it will never actually load from the contract storage.

#[must_use]pub fn lazy(key: Key) -> Self[src]

Creates a lazy storage cell for the given key.

Note

This will actually lazily load from the associated storage cell upon access.

impl<T> LazyCell<T> where
    T: SpreadLayout
[src]

#[must_use]pub fn get(&self) -> Option<&T>[src]

Returns a shared reference to the value.

Note

This eventually lazily loads the value from the contract storage.

Panics

If decoding the loaded value to T failed.

#[must_use]pub fn get_mut(&mut self) -> Option<&mut T>[src]

Returns an exclusive reference to the value.

Note

This eventually lazily loads the value from the contract storage.

Panics

If decoding the loaded value to T failed.

pub fn set(&mut self, new_value: T)[src]

Sets the value in this cell to value, without executing any reads.

Note

No reads from contract storage will be executed.

This method should be preferred over dereferencing or get_mut in case the returned value is of no interest to the caller.

Panics

If accessing the inner value fails.

Trait Implementations

impl<T> Debug for LazyCell<T> where
    T: Debug + SpreadLayout
[src]

impl<T> Default for LazyCell<T> where
    T: Default + SpreadLayout
[src]

impl<T> Drop for LazyCell<T> where
    T: SpreadLayout
[src]

impl<T> From<T> for LazyCell<T> where
    T: SpreadLayout
[src]

impl<T> SpreadLayout for LazyCell<T> where
    T: SpreadLayout
[src]

impl<T> StorageLayout for LazyCell<T> where
    T: StorageLayout + SpreadLayout
[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for LazyCell<T>

impl<T> Send for LazyCell<T> where
    T: Send

impl<T> !Sync for LazyCell<T>

impl<T> Unpin for LazyCell<T> where
    T: Unpin

impl<T> UnwindSafe for LazyCell<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<!> for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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