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

为何从Rust的match块返回不匹配类型仍能正常运行?

为什么Rust中这个match分支返回不匹配类型却不报错?

你看到的现象核心原因是**Equal分支里的return ();直接终止了main函数**,根本没走到给变量a赋值的步骤,所以不会触发类型不匹配的错误。

具体来说:

  • Rust确实要求match的所有分支返回类型必须一致,但这里的Equal分支并没有完成match表达式的求值——return语句会立即跳出当前函数,这个分支的执行流程到此为止,不会把()作为match的结果赋值给a。
  • 如果把return ();改成直接返回(),比如:
    use std::cmp::Ordering;
    fn main() {
        let n = 56;
        let o = 56;
        let a: i32 = match n.cmp(&o) {
            Ordering::Greater => 1,
            Ordering::Equal => (),
            Ordering::Less => 3,
        };
        println!("{a}");
    }
    
    此时编译器就会报错,提示()和i32类型不匹配,这才是Rust强类型检查的正常表现。

内容的提问来源于stack exchange,提问作者Abir Sheikh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:45:45