同时使用 while let 和两个变量

Using while let with two variables simultaneously

我正在学习 Rust 并且一直在解决 leetcode 问题。其中之一包括合并两个链表,其节点是可选的。我想写一个 while 循环,它会一直持续到至少有 1 个节点变成 None,而我正试图为此使用 while let 循环。

但是,while let 语法似乎只支持一个可选的,例如:

while let Some(n) = node {
   // do stuff
}

但是我不会写

while let Some(n1) = node1 && Some(n2) = node2 {
}

我是不是误解了语法?我知道我可以用 while true 循环重写它,但是有更优雅的方法吗?

另外,可以用 if let 进行多次检查吗?喜欢if let None=node1 && None=node2 {return}

您可以使用 Option::zip 进行模式匹配:

while let Some((n1, n2)) = node1.zip(node2) {
    ...
}

除了@Netwave 所说的,在 nightly 你可以使用不稳定的 let_chains 特性:

#![feature(let_chains)]

while let Some(n1) = node1 && let Some(n2) = node2 {
    // ...
}