gpt4 book ai didi

rust - 条件评估的替代方法是什么,例如 Rust const 函数中的 if 或 match?

转载 作者:行者123 更新时间:2023-12-03 11:25:44 25 4
gpt4 key购买 nike

我有代码根据环境名称读取 config.toml 文件并为整个项目提供所有配置设置。

const fn get_conf() -> toml::Value {
let file_name = match env::var("ENVIRONMENT") {
Ok(val) => val.to_lowercase(),
Err(_e) => "development".to_lowercase(),
};

let content = fs::read_to_string(format!("conf/{}.toml", file_name)).unwrap();
let conf: Value = toml::from_str(content.as_str()).unwrap();

conf
}

static mut CONFIG: toml::Value = get_conf();

我得到一个错误:

error[E0658]: `match` is not allowed in a `const fn`
--> src/lib.rs:2:21
|
2 | let file_name = match env::var("ENVIRONMENT") {
| _____________________^
3 | | Ok(val) => val.to_lowercase(),
4 | | Err(_e) => "development".to_lowercase(),
5 | | };
| |_____^
|
= note: see issue #49146 <https://github.com/rust-lang/rust/issues/49146> for more information

这在 Rust nightly 中解决了,但我不想在生产中使用每晚构建。在 const 函数中使用 match 或 if 条件是否有任何解决方法?

最佳答案

来自 Rust 1.46 const fn 现在允许使用一些核心语言功能。

const fn improvements

There are several core language features you can now use in a constfn:

if, if let, and match
while, while let, and loop
the && and || operators

关于rust - 条件评估的替代方法是什么,例如 Rust const 函数中的 if 或 match?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62529799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com