0

我想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 没有实现该特征

4

1 回答 1

0

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

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

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

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

于 2021-07-12T15:25:52.543 回答