[Avg. reading time: 2 minutes]

Expression

In Rust, almost everything is an expression. An expression evaluates to a value.

A key rule to remember

  • An expression without a semicolon returns a value
  • Adding a semicolon turns it into a statement and discards the value
 // Expressions and Semicolons

fn main() {
    let x = 5u32;

    let y = {
        // intermediate expressions
        let x_squared = x * x;
        let x_cube = x_squared * x;

        // last expression, no semicolon
        // this value is assigned to y
        x_cube + x_squared + x
    };

    let z = {
        // simple block expression
        2 * x
    };

    let zz = {
        // semicolon suppresses the value
        // this block evaluates to ()
        2 * x;
    };

    println!("x is {:?}", x);
    println!("y is {:?}", y);
    println!("z is {:?}", z);
    println!("zz is {:?}", zz);
}

#expression #semicolonVer 2.0.9

Last change: 2026-02-04