gpt4 book ai didi

rust - Unwrap_or是否需要String或&str防 rust ?

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

我正在尝试解析环境值;使用std::env如下

let environment = env::var("SENSIBULL_ENVIRONMENT").unwrap();

这会将字符串返回到变量 environment。如果要传递默认值,则必须使用以下代码
let environment = env::var("SENSIBULL_ENVIRONMENT").unwrap_or("development".into());

但我期望这样做
let environment = env::var("SENSIBULL_ENVIRONMENT").unwrap_or("development");

如Rust example中所述

但随后显示错误 String expected but found &str
为什么在示例代码中没有发生该错误?

最佳答案

在Rust中,字符串文字的类型为&str,环境变量的类型为String。本质上,&str的大小是固定的,而String则可以动态更改和调整大小(阅读更多here)。 unwrap_or要求备用值与选项值的类型相同,这意味着您必须提供String以匹配环境变量的类型。这就是为什么您必须调用.into将其转换为字符串的原因。在他们的示例中,该选项使用字符串文字,该字符串文字的类型也为&str,因此没有错误。

关于rust - Unwrap_or是否需要String或&str防 rust ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61393599/

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