wiki/content/20200923144022-closures.md

683 B

date id title
20200923 8353cf5c-2d2d-480a-b957-0e90da847e1c Rust Closures

Syntax

Long

fn main() {
    let double_closure = |num: u32| -> u32 { 2 * num };

    println!("2 times 3 = {}", double_closure(3));
}

Abbreviated

fn main() {
    let double_closure = |num| 2 * num;

    println!("2 times 3 = {}", double_closure(3));
}

Closure variable scope

Unlike Rust functions Closures can capture their environment and access variables from the scope in which they're defined:

fn main() {
    let x = 4;

    let equal_to_x = |z| z == x;

    let y = 4;

    assert!(equal_to_x(y));
}