我试图在Rust中设置一个常量、预定义的哈希映射.我不确定这方面的最佳实践是什么.

use std::collections::HashMap;

pub const Countries: HashMap<&str, &str> = [
    ("UK", "United Kingdom"),
    ("US", "United States")
].iter().cloned().collect();

这些将在库中稍后引用.

如果这不好,我猜函数中的匹配是最好的方式?

推荐答案

可以使用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相关问答推荐

即使参数和结果具有相同类型,fn的TypId也会不同

关联类型(类型参数)命名约定

当Option为None时,Option数组是否占用Rust中的内存?

MacOS(AARCH64)上Ghidra中的二进制补丁导致进程终止

如何编写一个以一个闭包为参数的函数,该函数以另一个闭包为参数?

自定义结果枚举如何支持`?`/`FromResidual`?

如何在递归数据 struct 中移动所有权时变异引用?

为什么这个变量不需要是可变的?

在为第三方 struct 实现第三方特征时避免包装器的任何方法

如何将带有嵌套borrow /NLL 的 Rust 代码提取到函数中

使用 select 处理 SIGINT 和子等待!无阻塞

在 Rust 中,在第一个空格上分割字符串一次

如何在 Rust 中显式声明 std::str::Matches<'a, P> ?

&self 参数在 trait 的功能中是必需的吗?

我如何将 google_gmail1::Gmail> 传递给线程生成?

使用泛型作为关联类型,没有幻像数据

如何用另一个变量向量置换 rust simd 向量?

如何制作具有关联类型的特征的类型擦除版本?

如何从 Rust 中不同类型的多个部分加入 Path?

您不能borrow 对只读值的可变引用