在 Rust 中的“if - else”结构中创建或分配几个对象之一给变量的首选方法是什么?由于范围界定,似乎必须在 if - else 之外创建变量。我想到的两种方式都不是很好。以字符串为例,这是一种方法,但它会生成有关未使用的赋值的警告:
let mut s = String::new();
if condition {
s = "first".to_string();
} else {
s = "second".to_string();
}
另一种选择是这样的:
let mut s = "second".to_string();
if condition {
s = "first".to_string();
}
它更短并且不会生成警告,但意味着 s
被分配了两次,并且意味着 "second".to_string()
运行但如果条件
为真。如果不是简单的字符串创建,而是这些是昂贵的操作(可能有副作用),则此方法不适合。
有更好的选择吗?
最佳答案
在 Rust 中,if/else block 是一个表达式。也就是说, block 本身有一个值,相当于执行的任何部分中的最后一个表达式。考虑到这一点,我会像这样构造您的代码:
let s = if condition {
"first"
} else {
"second"
}.to_string();
关于rust - 在 Rust 中从 if else 条件赋值的惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53981783/