Macro frame_support::generate_storage_alias [−][src]
macro_rules! generate_storage_alias {
($pallet : ident, $name : ident => Map < ($key : ty, $hasher : ty), $value :
ty $(, $querytype : ty) ? >) => { ... };
($pallet : ident, $name : ident => DoubleMap < ($key1 : ty, $hasher1 : ty),
($key2 : ty, $hasher2 : ty), $value : ty $(, $querytype : ty) ? >) => { ... };
($pallet : ident, $name : ident => NMap < Key < $(($key : ty, $hasher : ty)),
+ >, $value : ty $(, $querytype : ty) ? >) => { ... };
($pallet : ident, $name : ident => Value < $value : ty $(, $querytype : ty) ?
>) => { ... };
($pallet : ident, $name : ident < $t : ident : $bounds : tt > => Map <
($key : ty, $hasher : ty), $value : ty $(, $querytype : ty) ? >) => { ... };
($pallet : ident, $name : ident < $t : ident : $bounds : tt > => DoubleMap <
($key1 : ty, $hasher1 : ty), ($key2 : ty, $hasher2 : ty), $value : ty
$(, $querytype : ty) ? >) => { ... };
($pallet : ident, $name : ident < $t : ident : $bounds : tt > => NMap <
$(($key : ty, $hasher : ty),) + $value : ty $(, $querytype : ty) ? >) => { ... };
($pallet : ident, $name : ident < $t : ident : $bounds : tt > => Value <
$value : ty $(, $querytype : ty) ? >) => { ... };
(@ GENERATE_INSTANCE_STRUCT $pallet : ident, $name : ident) => { ... };
}
Expand description
Generate a new type alias for storage::types::StorageValue
,
storage::types::StorageMap
, storage::types::StorageDoubleMap
and storage::types::StorageNMap
.
Useful for creating a storage-like struct for test and migrations.
use frame_support::codec;
use frame_support::Twox64Concat;
// generate a storage value with type u32.
generate_storage_alias!(Prefix, StorageName => Value<u32>);
// generate a double map from `(u32, u32)` (with hashers `Twox64Concat` for each key)
// to `Vec<u8>`
generate_storage_alias!(
OtherPrefix, OtherStorageName => DoubleMap<
(u32, Twox64Concat),
(u32, Twox64Concat),
Vec<u8>
>
);
// optionally specify the query type
use frame_support::pallet_prelude::{ValueQuery, OptionQuery};
generate_storage_alias!(Prefix, ValueName => Value<u32, OptionQuery>);
generate_storage_alias!(
Prefix, SomeStorageName => DoubleMap<
(u32, Twox64Concat),
(u32, Twox64Concat),
Vec<u8>,
ValueQuery
>
);
// generate a map from `Config::AccountId` (with hasher `Twox64Concat`) to `Vec<u8>`
trait Config { type AccountId: codec::FullCodec; }
generate_storage_alias!(
Prefix, GenericStorage<T: Config> => Map<(T::AccountId, Twox64Concat), Vec<u8>>
);