zha*_*ozk 2 initialization rust
我想声明acceptable_set并使用它。但分配给它的是一个空向量。所以编译器会发出警告。如何声明一个变量而不给它赋值?
let mut acceptable_set: Vec<String> = Vec::new();
if opt.acceptable_set.is_none() {
acceptable_set = crate::builtin_words::ACCEPTABLE
.to_vec()
.iter_mut()
.map(|x| x.to_string())
.collect();
} else {
acceptable_set = get_acceptable_set(opt)
}
Run Code Online (Sandbox Code Playgroud)
warning: value assigned to `acceptable_set` is never read
--> src/basic_function.rs:27:13
|
27 | let mut acceptable_set: Vec<String> = Vec::new();
| ^^^^^^^^^^^^^^
|
= note: `#[warn(unused_assignments)]` on by default
= help: maybe it is overwritten before being read?
Run Code Online (Sandbox Code Playgroud)
而不是像这样声明一个未初始化的变量
let var;
if condition {
var = value1;
} else {
var = value2;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用替代方案直接初始化变量。
let var = if condition { value1 } else { value2 };
Run Code Online (Sandbox Code Playgroud)
你的变量甚至不需要mut关键字(除非你想在之后改变它)。
由于在您的问题示例中,您似乎是针对Option( .is_none()) 进行测试,因此您可以使用此形式。
fn main() {
let value1 = 12;
let value2 = 34;
let opt = Some(987);
let var = if let Some(opt_value) = opt {
value1 + opt_value // use the data in the option
} else {
value2 // the option contains nothing, use a default value
};
println!("var {:?}", var);
}
Run Code Online (Sandbox Code Playgroud)
另请参见map_or_else()。
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |