You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:52:10