问题描述
我想用墨水创建一个 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
解决方法
ink_storage::Vec
没有实现 PackedLayout
因为它的布局没有打包!根据{{3}}:
尽管与 Rust 的 Vec
类型相似,但此存储 Vec
在其内部数据布局上有许多不同。虽然它将数据存储在连续的存储槽中,但这并不意味着数据实际上密集地存储在内存中。
数据被组织成连续的块,但每个块可能不与内存中的前一块相邻。
另一方面,std::vec::Vec
确实实现了PackedLayout
,因此您应该可以使用它。