Closure = Lambda(C++)

Closure is a function-like construct that can capture variables from the environment in which it is defined.
Rust (Closure) C++ (Lambda)
Can capture variables from their surrounding environment Yes Yes
Syntax |...| { ... } [ ] (parameters) { ... }
Different Types Move, Borrow Closure There are no types in lambda
Can place break in closure? No. You can do return. But rust does not allow break due to ownership and borrow check rules Yes

Closure Types

Move Closure

A move closure captures variables from its environment by taking ownership of them (i.e., moving them). Example

fn main() {
    let x = 10;
    let closure = || {
        println!("Value of x: {}", x);
    };
    closure(); // This is a move closure since it captures 'x' by moving it.
    // 'x' cannot be used after this point, as it has been moved into the closure.
}
            

Borrow Closure

A borrow closure captures variables by borrowing them (i.e., creating references to them)