我在做一个几年前写的rust项目,我遇到了这段代码,它实际上是:
let mut values = vec![];
for x in maybe_values {
if let Some(x) = x {
values.push(Arc::new(x));
}
}
我知道"if let"引入了一种模式匹配if(这似乎是对关键字"let"的拙劣重复使用,但我会克服这一点——如果有人能帮我用记忆法来理解这里的"let",请做!).
但是Some(x) = x
分考试在做什么呢?
从我的测试来看,这似乎是一个技巧/习惯用法:a)测试循环变量"x"是Some(),以及b)以x中的unwrap()ped值结束.
但我不能完全向自己解释,也找不到任何地方提到这是一个习语.
希望你能帮助我走上正确的教育道路.谢谢