rust - 在 Rust 中创建具有默认值的 `SecondaryMap`
问题描述
给定 a SlotMap
,可以创建一个SecondaryMap
将每个键从 映射SlotMap
到默认值的 a 吗?
我们可以像这样创建一个函数:
fn create_secondary_map<K, I, V>(slotmap: SlotMap<K, I>, val: V) -> SecondaryMap<K, V> {
let map = SecondaryMap::new();
for key in slotmap.keys() {
map.insert(key, val);
}
map
}
但我更愿意使用更“原生”的方式进行转换,也许使用已经存在的方法。我没有找到任何可以创建另一个SecondaryMap
已经被填充的东西,有人知道这样的事情吗?
我想像这样使用它:
let secondary = slotmap.create_secondary(def_value);
哪里可能def_value
会关闭。
解决方案
当标准迭代器机制可用且更可组合时,不需要专用方法。尝试这样的事情:
use slotmap::{Key, SecondaryMap, SlotMap};
fn create_secondary_map<K, I, V>(slotmap: &SlotMap<K, I>, val: V) -> SecondaryMap<K, V>
where
K: Key,
V: Clone,
{
slotmap.keys().map(|key| (key, val.clone())).collect()
}
推荐阅读
- javascript - 如何在使用Javascript的字符串中出现另一个字符串标记之前插入一个字符串标记
- xml - Soap 请求所需信息 VB.net
- java - Java 中的 HttpPut 文件上传 - 覆盖 TrustStrategy:是否有“更好/更安全”的方式?
- javascript - 如何使用httpClient从角度访问可观察对象的数据?
- asp.net-core - NET Core 3 应用程序中的 Kubernetes 服务发现 404
- cookies - @hapi/bell (discord) --> @hapi/cookie 身份验证切换
- sql - 添加条件以仅返回空值
- android - Android Studio 空闲时 CPU 使用率为 20%
- symfony - 如何在学说查询生成器中使用 orWhere inside andWhere
- java - 如何在 JavaFX 中向 ComboBox 添加掩码?