同时使用 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 {
// ...
}
我正在学习 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 {
// ...
}