1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::{
    api::{ErrorApi, ManagedTypeApi, StorageReadApi, StorageWriteApi},
    storage::StorageKey,
};

pub trait StorageMapper<SA>: 'static
where
    SA: StorageReadApi + StorageWriteApi + ManagedTypeApi + ErrorApi + Clone + 'static,
{
    /// Will be called automatically by the `#[storage_mapper]` annotation generated code.
    fn new(api: SA, base_key: StorageKey<SA>) -> Self;
}

pub trait StorageClearable {
    /// Clears all the entries owned by the storage.
    fn clear(&mut self);
}