指定常量哈希映射时的 Rust 最佳实践 [重复]
Posted
技术标签:
【中文标题】指定常量哈希映射时的 Rust 最佳实践 [重复]【英文标题】:Rust best practices when specifying a constant hash map [duplicate] 【发布时间】:2020-06-02 00:17:14 【问题描述】:我正在尝试在 Rust 中设置一个常量、预定义的哈希映射。我不确定 Rust 的最佳实践是什么。
use std::collections::HashMap;
pub const Countries: HashMap<&str, &str> = [
("UK", "United Kingdom"),
("US", "United States")
].iter().cloned().collect();
这些将随后在库中被引用。
如果这不好,我猜函数中的匹配是最好的方法?
【问题讨论】:
我最近使用了类似的东西(连同lazy_static
;文档中甚至还有一个HashMap
示例)。有兴趣看看人们会在这里提出什么建议。
【参考方案1】:
您可以使用https://crates.io/crates/lazy_static(在运行时延迟执行)。
如果数据确实是静态的,我个人会为此使用https://crates.io/crates/phf(编译时静态集合)。
use phf::phf_map;
static COUNTRIES: phf::Map<&'static str, &'static str> = phf_map!
"US" => "United States",
"UK" => "United Kingdom",
;
【讨论】:
以上是关于指定常量哈希映射时的 Rust 最佳实践 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Rust 内存管理之声明延迟计算的常量 - Rust 实践指南