在Rust中,在"if-else"构造中,创建或将多个对象之一指定给变量的首选方式是什么?由于范围限制,似乎必须在if-else之外创建变量.我想到的两种方式都不太好.以字符串为例,这里有一种方法,但它会生成一个关于未使用的赋值的警告:
let mut s = String::new();
if condition {
s = "first".to_string();
} else {
s = "second".to_string();
}
另一种 Select 是:
let mut s = "second".to_string();
if condition {
s = "first".to_string();
}
它更短,不会生成警告,但意味着s
将被分配两次,意味着"second".to_string()
次运行,但如果condition
为真,则会被浪费.如果不是简单的字符串创建,而是昂贵的操作(可能有副作用),那么这种方法就不合适了.
还有更好的 Select 吗?