Blocks
A block in Rust has a value and a type: the value is 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}");
}
The same rule is used for functions: the value of the function body is the return value:
fn double(x: i32) -> i32 {
x + x
}
fn main() {
println!("doubled: {}", double(7));
}
However if the last expression ends with ;
, then the resulting value and type is ()
.
Key Points:
- The point of this slide is to show that blocks have a type and value in Rust.
- You can show how the value of the block changes by changing the last line in the block. For instance, adding/removing a semicolon or using a
return
.