filter_map过滤转换
利用filter_map同时完成过滤和映射操作,优雅处理Option和Result类型。 · 难度:入门 · +15XP
filter_map过滤转换
filter_map 是 Rust 迭代器的强大组合操作:它接收一个返回 Option
fn main() {
let strings = vec!["1", "two", "3", "4", "five", "6"];
// 尝试解析字符串为整数,只保留成功结果
let numbers: Vec = strings
.iter()
.filter_map(|s| s.parse::().ok())
.collect();
println!("Parsed numbers: {:?}", numbers); // [1, 3, 4, 6]
// 另一个例子:从Option中提取有效值
let options = vec![Some(10), None, Some(20), None, Some(30)];
let values: Vec = options.into_iter()
.filter_map(|x| x)
.collect();
println!("Extracted values: {:?}", values); // [10, 20, 30]
}