指定常量哈希映射时的 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 实践指南

一致性哈希(PHP核心技术与最佳实践)

在数据库中存储动态字段时的最佳实践

使用最佳实践反应导入模块 [重复]

在 Rust 程序和嵌入式 WebAssembly 运行时之间进行通信的最佳实践是啥?

哈希密码的最佳实践