pub trait Mappable {
    type Key: ?Sized + ToOwned;
    type OwnedKey: From<<Self::Key as ToOwned>::Owned> + Clone;
    type Value: ?Sized + ToOwned;
    type OwnedValue: From<<Self::Value as ToOwned>::Owned> + Clone;
}
Expand description

Mappable type with Key and Value.

Example

use fuel_storage::Mappable;
pub struct Contract;

impl Mappable for Contract {
    /// The `[u8; 32]` is a primitive type, so we can't optimize it more.
    type Key = Self::OwnedKey;
    type OwnedKey = [u8; 32];
    /// It is optimized to use slice instead of vector.
    type Value = [u8];
    type OwnedValue = Vec<u8>;
}

Required Associated Types§

The key type is used during interaction with the storage. In most cases, it is the same as Self::OwnedKey.

The owned type of the Key retrieving from the storage.

The value type is used while setting the value to the storage. In most cases, it is the same as Self::OwnedValue, but it is without restriction and can be used for performance optimizations.

The owned type of the Value retrieving from the storage.

Implementors§