#macro-helpers #proc-macro #helper #procedural #storage #index #cw-storage-plus

tw-storage-macros

用于与 cw-storage-pluscosmwasm-storage 交互的过程宏助手。

1 个不稳定版本

0.1.2 2022年5月20日

#48#macro-helpers

Apache-2.0

8KB
101

存储宏

用于与 cw-storage-pluscosmwasm-storage 交互的过程宏助手。

当前功能

索引列表实现宏

自动为您索引结构体生成 IndexList 实现。

index_list_impl(T) 将在宏调用下方为结构体 T 生成 impl IndexList<T>

还需要从 cw-storage-plus 引入 IndexListIndex

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
struct TestStruct {
    id: u64,
    id2: u32,
    addr: Addr,
}

#[index_list_impl(TestStruct)] // <- Add this line right here,.
struct TestIndexes<'a> {
    id: MultiIndex<'a, (U32Key, Vec<u8>), TestStruct>,
    addr: UniqueIndex<'a, Addr, TestStruct>,
}

存储键、主键和前缀器实现派生宏

为所有者和引用变体自动生成 PrimaryKeyPrefixer 实现,以及 as_bytesfrom_slice 实现。

StorageKey 将生成以下内容

  • impl PrimaryKey<'_> for T
  • impl<'a> PrimaryKey<'a> for &'a T
  • impl Prefixer<'_> for T
  • impl<'a> Prefixer<'a> for &'a T
  • pub fn as_bytes(&self) -> &[u8]
  • pub fn from_slice(b: &[u8]) ->T

对于在宏调用下方的枚举 T

还需要从 cw-storage-plus 引入 PrimaryKeyPrefixer

#[derive(Clone, Copy, StorageKey)] // <- Add the derive macro here.
enum TestEnum {
    G,
    F,
}
```r

依赖项

~1.5MB
~35K SLoC