Rust中如何合并match分支中相同处理逻辑的匹配项?
Rust 合并 Match 相同逻辑分支的正确方式
你尝试的两种写法都不可行,Rust 提供了专门的语法来合并这类逻辑相同的匹配分支:
你的写法为什么不对
||是布尔逻辑运算符,仅能用于表达式判断,不能作为模式匹配的分支匹配条件。- 元组写法是用来匹配元组类型的值,但
val.cmp(&n)返回的是单个Ordering枚举实例,并非元组,因此这种写法无法匹配到目标值。
正确的实现方式
Rust 支持在匹配模式中用**|**(竖线)分隔多个需要匹配的枚举变体,直接合并逻辑相同的分支:
use std::cmp::Ordering; fn foo() {} fn bar() {} fn main() { let val = 5; let n = 3; match val.cmp(&n) { Ordering::Less => foo(), // 用竖线分隔多个匹配变体,合并分支逻辑 Ordering::Equal | Ordering::Greater => bar(), }; }
如果后续需要匹配的变体数量较多,或者想简化末尾分支的写法,也可以使用 _ 通配符作为兜底分支,但在这个场景下,明确写出需要匹配的变体(用竖线分隔)会让代码可读性更强。
内容的提问来源于stack exchange,提问作者Eduardo Galeano
相关产品推荐
相关产品推荐

