在rust中,Unwrap_or需要String或&str?

我正在尝试解析一个环境值;使用了 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");

如《锈》中所述 例子

但随后显示错误 String expected but found &str

为什么在示例代码中没有发生这个错误?

解决方案:

在Rust中,字符串字元的类型为 &str,环境变量的类型为 String. 基本上: &str的大小是固定的,而 String可以动态地改变和调整大小(阅读更多信息 此处). unwrap_or 要求备用值与期权值的类型相同,这意味着你必须提供一个 String 来匹配环境变量的类型。这就是为什么你必须调用 .into 来将其转换为字符串。在他们的例子中,这个选项使用的是字符串文字,也是类型为 &str所以没有错误。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如果函数中的函数返回true,就做一些事情(python 3)

2022-5-11 16:00:11

解决方案

动态地将评论预先填充到聊天框中。

2022-5-11 16:00:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索