gpt4 book ai didi

rust - 如何使用 Rust 迭代器获得多个 `if let`?

转载 作者:行者123 更新时间:2023-11-29 07:58:08 25 4
gpt4 key购买 nike

我有这个代码:

fn main() {
let mut args = std::env::args();

if let Some(name) = args.next() {
if let Some(first) = args.next() {
println!("One arg provided to {}: {}", name, first);
}
}
}

是否可以有两个if let?我试过:

fn main() {
if let Some(name) = args.next() && Some(first) = args.next() {
println!("one arg provided to {}: {}", name, first);
}
}

fn main() {
if let Some(name) = args.next() && let Some(first) = args.next() {
println!("one arg provided to {}: {}", name, first);
}
}

但这行不通。如何做到这一点?

最佳答案

您可以使用“融合”迭代器将多个值收集到一个元组中,并使用 if let :

fn main() {
let mut args = std::env::args().fuse();
if let (Some(a), Some(b)) = (args.next(), args.next()) {
println!("{}, {}", a, b);
}
}

( Example on the playground )

fuse 保证在 next 返回一次 None 之后,每次调用 next 都会返回 None

关于rust - 如何使用 Rust 迭代器获得多个 `if let`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com