【问题标题】:HashMap of AccountId tuple and ink_storage::collections::VecAccountId 元组和 ink_storage::collections::Vec 的 HashMap
【发布时间】:2021-07-12 10:25:34
【问题描述】:

我想用墨水创建一个HashMap 存储项目!。

#[ink(storage)]
pub struct item {
    shipment: ink_storage::collections::HashMap<
        (AccountId, AccountId),
        ink_storage::collections::Vec<u128>,
    >,
}

并初始化它:

#[ink(constructor)]
pub fn new() -> Self {
    Self {
        shipment: ink_storage::collections::HashMap::new(),
    }
}

我遇到了这个错误信息

特征PackedLayout 未实现 `ink_storage::Vec

【问题讨论】:

标签: rust rust-ink


【解决方案1】:

ink_storage::Vec 没有实现PackedLayout,因为它的布局没有打包!根据the docs

尽管与 Rust 的 Vec 类型相似,但此存储 Vec 在其内部数据布局上有许多不同之处。虽然它将数据存储在连续的存储槽中,但这并不意味着数据实际上密集存储在内存中。

数据被组织成连续的块,但每个块在内存中可能不与前一个块相邻。

另一方面,std::vec::Vec确实实现了PackedLayout,所以你应该可以使用它。

【讨论】:

  • 改成std::vec::Vec后如何初始化HashMap?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2022-06-08
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多