理解 Rust 是一门“基于表达式”的语言。深入解析分号的魔力、隐式返回以及如何编写高内聚的局部代码块。

1. 语句 (Statements) 与 表达式 (Expressions)

  • 语句:执行操作但不返回值的指令(以分号 ; 结尾)。
  • 表达式:计算并产生一个值的代码片段(无结尾分号)。
fn calculate(x: i32) -> i32 {
    let y = {
        let temp = x * 2;
        temp + 1 // 表达式,注意末尾没有分号!
    };
    y * 3 // 隐式返回整个函数的结果
}

如果给最后一行的 y * 3 加上分号,它将变成一条语句,返回值会隐式退化为单例单元类型 (),从而触发编译器类型不匹配报错。