【发布时间】:2021-05-24 02:46:15
【问题描述】:
作为一个 rust 新手,我在使用“find”函数在 Option 的向量中查找元素时遇到问题:
#[derive(Debug)]
struct MyStruct {
name: Option<String>,
data: Option<String>
}
fn main() {
let my_vec=vec![
MyStruct{
name:Some(String::from("name1")),
data:Some(String::from("data1"))
},
MyStruct{
name:Some(String::from("name2")),
data:Some(String::from("data2"))
}
];
let search_string = String::from("name2");
let found_record=my_vec.iter().find(|s| s.name == Some(search_string));
println!("{:?}", found_record);
}
由于缺少 Copy 特征,比较 s.name == Some(search_string),此代码无法编译。 “查找”表达式的正确方法是什么?
【问题讨论】:
-
my_vec.iter().find(|s| s.name.as_deref() == Some("name2"))