Rust 闭包

在Rust中,闭包Closures就是匿名函数

// 无参数闭包
let hello = || println!("Hello!");
hello();

// 带参数闭包
let add = |a, b| a + b;
println!("Sum: {}", add(2, 3)); // 输出:5

// 类型标注(可选)
let square = |x: i32| -> i32 { x * x };


let num = 10;

// 捕获 num 的不可变引用
let add_num = |x| x + num;
println!("Result: {}", add_num(5)); // 输出:15

// 可修改变量捕获
let mut count = 0;
let mut inc = || {
    count += 1;  // 捕获可变引用
    println!("Count: {}", count);
};
inc(); // 输出:Count: 1
inc(); // 输出:Count: 2

let data = vec![1, 2, 3];

// 使用 move 强制获取所有权
let closure = move || {
    println!("Data length: {}", data.len());
};

closure();
// println!("{:?}", data); // 错误!所有权已移入闭包
posted @ 2025-06-28 10:24  店里最会撒谎白玉汤  阅读(12)  评论(0)    收藏  举报