pub struct StateRefMut<'a, V: Serial, S: HasStateApi> { /* private fields */ }
Expand description

The StateRefMut<_, V, _> behaves like &mut V, by analogy with other standard library RAII guards like RefMut. The type implements DerefMut which allows the value to be mutated. Additionally, the Drop implementation ensures that the value is properly stored in the contract state maintained by the node.

Implementations§

source§

impl<'a, V, S> StateRefMut<'a, V, S>
where V: Serial, S: HasStateApi,

source

pub fn get(&self) -> &V
where V: DeserialWithState<S>,

Get a shared reference to the value. Note that StateRefMut also implements Deref so this conversion can happen implicitly.

source

pub fn get_mut(&mut self) -> &mut V
where V: DeserialWithState<S>,

Get a unique reference to the value. Note that StateRefMut also implements DerefMut so this conversion can happen implicitly.

source

pub fn set(&mut self, new_val: V)

Set the value. Overwrites the existing one.

source

pub fn update<F>(&mut self, f: F)
where V: DeserialWithState<S>, F: FnOnce(&mut V),

Update the existing value with the given function.

Trait Implementations§

source§

impl<'a, V: Debug + Serial, S: Debug + HasStateApi> Debug for StateRefMut<'a, V, S>
where S::EntryType: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, S: HasStateApi, V: Serial + DeserialWithState<S>> Deref for StateRefMut<'a, V, S>

§

type Target = V

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'a, S: HasStateApi, V: Serial + DeserialWithState<S>> DerefMut for StateRefMut<'a, V, S>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<'a, V: Serial, S: HasStateApi> Drop for StateRefMut<'a, V, S>

When dropped, the value, V, is written to the entry in the contract state.

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a, V, S> !Freeze for StateRefMut<'a, V, S>

§

impl<'a, V, S> !RefUnwindSafe for StateRefMut<'a, V, S>

§

impl<'a, V, S> Send for StateRefMut<'a, V, S>
where S: Clone + Send, <S as HasStateApi>::EntryType: Send, V: Send,

§

impl<'a, V, S> !Sync for StateRefMut<'a, V, S>

§

impl<'a, V, S> Unpin for StateRefMut<'a, V, S>
where S: Clone + Unpin, <S as HasStateApi>::EntryType: Unpin, V: Unpin,

§

impl<'a, V, S> !UnwindSafe for StateRefMut<'a, V, S>

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.