如何在 Rust 编程语言最内层结构中存在的无序映射中插入键值对?
How can I insert a key-value pair in an unordered map that is present in the innermost struct in rust programming language?
这是我的数据模型:
pub struct RaffleDetails {
prize: Balance,
start: Timestamp,
end: Timestamp,
participants: UnorderedMap<AccountId, Balance>,
}
pub struct RaffleDapp {
raffles: UnorderedMap<AccountId, RaffleDetails>,
}
如何在 'participants' 变量中插入键值对?
我试过self.raffles.get(&raffle_account_id).unwrap().participants.insert(&env::predecessor_account_id(), &confidence);
但它不持久。
参考资料:
UnorderedMap
NEAR Rust SDK
您需要确保更新地图中的 RaffleDetails
实例,而不是它的 copy/clone。
我不熟悉 UnorderedMap
,但在我看来 get()
方法 returns 一个 copy 的值在 地图中,因此您只更新复制的值。我不知道 UnorderedMap
是否允许您直接改变其中的值(浏览文档,我没有看到这样的方法)。不过,您可以做的是 re-insert 修改后的 RaffleDetails
到 raffles
地图中(以便 将旧地图替换 修改后的地图)。
我说的是这样的(我还没有测试编译它):
let o = self.raffles.get(&raffle_account_id);
if let copied_rd = Some(o) {
copied_rd.participants.insert(&env::predecessor_account_id(), &confidence);
self.raffles.insert(&raffle_account_id, &copied_rd);
}
这是我的数据模型:
pub struct RaffleDetails {
prize: Balance,
start: Timestamp,
end: Timestamp,
participants: UnorderedMap<AccountId, Balance>,
}
pub struct RaffleDapp {
raffles: UnorderedMap<AccountId, RaffleDetails>,
}
如何在 'participants' 变量中插入键值对?
我试过self.raffles.get(&raffle_account_id).unwrap().participants.insert(&env::predecessor_account_id(), &confidence);
但它不持久。
参考资料: UnorderedMap NEAR Rust SDK
您需要确保更新地图中的 RaffleDetails
实例,而不是它的 copy/clone。
我不熟悉 UnorderedMap
,但在我看来 get()
方法 returns 一个 copy 的值在 地图中,因此您只更新复制的值。我不知道 UnorderedMap
是否允许您直接改变其中的值(浏览文档,我没有看到这样的方法)。不过,您可以做的是 re-insert 修改后的 RaffleDetails
到 raffles
地图中(以便 将旧地图替换 修改后的地图)。
我说的是这样的(我还没有测试编译它):
let o = self.raffles.get(&raffle_account_id);
if let copied_rd = Some(o) {
copied_rd.participants.insert(&env::predecessor_account_id(), &confidence);
self.raffles.insert(&raffle_account_id, &copied_rd);
}