Derive Macro ink_storage_derive::StorageLayout[][src]

#[derive(StorageLayout)]
Expand description

Derives ink_storage’s StorageLayout trait for the given struct or enum.

Examples

use ink_metadata::layout::Layout::Struct;
use ink_primitives::Key;
use ink_storage::traits::{
    SpreadLayout,
    StorageLayout,
    push_spread_root,
    KeyPtr,
};

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

let mut key = Key::from([0x42; 32]);
let mut value = NamedFields {
    a: 123,
    b: [22; 32],
};

push_spread_root(&value, &key);

if let Struct(layout) = <NamedFields as StorageLayout>::layout(&mut KeyPtr::from(key)) {
    assert_eq!(*layout.fields()[0].name().unwrap(), "a");
    assert_eq!(*layout.fields()[1].name().unwrap(), "b");
}