Derive Macro ink_macro::StorageKey

source ·
#[derive(StorageKey)]
Expand description

Derives ink::storage’s StorageKey trait for the given struct or enum.

Examples

use ink::storage::traits::{
    AutoStorableHint,
    StorageKey,
    ManualKey,
    AutoKey,
};

#[derive(StorageKey)]
struct NamedFields {
    a: u32,
    b: [u32; 32],
}

assert_eq!(<NamedFields as StorageKey>::KEY, 0);

#[derive(StorageKey)]
struct NamedFieldsManualKey<KEY: StorageKey> {
    a: <u32 as AutoStorableHint<ManualKey<0, KEY>>>::Type,
    b: <[u32; 32] as AutoStorableHint<ManualKey<1, KEY>>>::Type,
}

assert_eq!(<NamedFieldsManualKey<()> as StorageKey>::KEY, 0);
assert_eq!(<NamedFieldsManualKey<AutoKey> as StorageKey>::KEY, 0);
assert_eq!(<NamedFieldsManualKey<ManualKey<123>> as StorageKey>::KEY, 123);