小编cre*_*der的帖子

在Rust中从if else条件中分配值的惯用法

在Rust中的"if - else"构造中创建或分配几个对象之一的首选方法是什么?由于范围界定,似乎变量必须在if - else之外创建.我认为的方式都不是很好.使用字符串作为示例,这是一种方式,但它会生成有关未使用的赋值的警告:

let mut s = String::new();
if condition {
    s = "first".to_string();
} else {
    s = "second".to_string();
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是:

let mut s = "second".to_string();
if condition {
    s = "first".to_string();
}
Run Code Online (Sandbox Code Playgroud)

它更短并且不会产生警告,但是意味着s被分配两次,并且意味着"second".to_string()运行但是如果condition是真的则浪费.如果不是简单的字符串创建,而是昂贵的操作(可能带有副作用),这种方法就不合适了.

还有更好的选择吗?

rust

6
推荐指数
2
解决办法
519
查看次数

标签 统计

rust ×1