我正在学习 rust 迹,并经历了leetcode问题.其中之一包括合并两个链表,它们的 node 是可选的.我想写一个while循环,直到至少有一个 node 变成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) {
    ...
}

Rust相关问答推荐

如果LET;使用布尔表达式链接(&Q);

rust 迹-内存管理-POP所有权-链表

将数组转换为HashMap的更简单方法

为什么这是&q;,而让&q;循环是无限循环?

重写Rust中的方法以使用`&;mut self`而不是`mut self`

在rust sqlx中使用ilike和push bind

更合理的方法来设计样条线函数器?

使用关联类型重写时特征的实现冲突

失真图像图形捕获Api

找不到 .has_func 或 .get_func 的 def

Rust ECDH 不会产生与 NodeJS/Javascript 和 C 实现相同的共享密钥

Rust 并行获取对 ndarray 的每个元素的可变引用

我如何取消转义,在 Rust 中多次转义的字符串?

在多核嵌入式 Rust 中,我可以使用静态 mut 进行单向数据共享吗?

没有得到无法返回引用局部变量`queues`的值返回引用当前函数拥有的数据的值的重复逻辑

具有在宏扩展中指定的生命周期的枚举变体数据类型

bcrypt 有长度限制吗?

如何使返回 XMLError 的方法与 anyhow::Error 兼容?

Rust,使用枚举从 HashMap 获取值

BigUint 二进制补码