pub trait Storable: Sized {
// Required methods
fn encode<T: Output + ?Sized>(&self, dest: &mut T);
fn decode<I: Input>(input: &mut I) -> Result<Self, Error>;
fn encoded_size(&self) -> usize;
}
Expand description
Trait for representing types which can be read and written to storage.
This trait is not the same as the scale::Codec
. Each type that implements
scale::Codec
are storable by default and transferable between contracts.
But not each storable type is transferable.
Required Methods§
Sourcefn encode<T: Output + ?Sized>(&self, dest: &mut T)
fn encode<T: Output + ?Sized>(&self, dest: &mut T)
Convert self to a slice and append it to the destination.
Sourcefn decode<I: Input>(input: &mut I) -> Result<Self, Error>
fn decode<I: Input>(input: &mut I) -> Result<Self, Error>
Attempt to deserialize the value from input.
Sourcefn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
The exact number of bytes this type consumes in the encoded form.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.