闭包

    • 使用 替代 () 将输入变量括起来。
    • 区块定界符({})对于单条表达式是可选的,其他情况必须加上。
    • 有能力捕获到外部环境变量。
    1. fn main() {
    2. // 通过闭包和函数实现增量。
    3. fn function (i: i32) -> i32 { i + 1 }
    4. // 这些匿名函数(nameless function)赋值给合适命名的变量。
    5. let closure_annotated = |i: i32| -> i32 { i + 1 };
    6. let closure_inferred = |i | i + 1 ;
    7. let i = 1;
    8. // 调用函数和闭包。
    9. println!("closure_inferred: {}", closure_inferred(i));
    10. // 没有参数的闭包,返回一个 `i32` 类型。
    11. // 返回类型是自动推导的。
    12. let one = || 1;
    13. println!("closure returning one: {}", one());