A block in Rust contains a sequence of expressions. Each block has a value and a type, which are those of the last expression of the block:

fn main() {
    let x = {
        let y = 10;
        println!("y: {y}");
        let z = {
            let w = {
                3 + 4
            };
            println!("w: {w}");
            y * w
        };
        println!("z: {z}");
        z - y
    };
    println!("x: {x}");
}

If the last expression ends with ;, then the resulting value and type is ().

同样的规则也适用于函数:函数主体的值 是返回值:

fn double(x: i32) -> i32 {
    x + x
}

fn main() {
    println!("double: {}", double(7));
}

关键点:

  • 这张幻灯片的重点是说明在 Rust 中,块有类型和值。
  • 你可以通过更改块的最后一行,来展示块值的变化情况。例如,添加/移除分号或使用 return