微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AccountId 元组和ink_storage::collections::Vec 的HashMap

如何解决AccountId 元组和ink_storage::collections::Vec 的HashMap

我想用墨水创建一个 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,因此您应该可以使用它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。