1 个不稳定版本
0.1.0 | 2024年6月24日 |
---|
#1508 在 Rust 模式
每月24次下载
7KB
76 行
closure-capture
捕获变量被移动到闭包或异步块中
使用 move 关键字时,闭包中使用的所有外部变量将被移动到闭包中。
有时你可能只需要移动几个变量,其余变量保持引用。
此时,你可以使用 closure-capture 指定要捕获的变量。
用法
链接 closure-capture
cargo.toml
[dependencies]
closure-capture = "0.1"
将变量 a 和 b 移动到闭包中
fn main() {
let a = 1;
let b = 2;
std::thread::spawn(closure_capture::closure!([a, b] () {
println!("{}", a + b)
}))
.join()
.unwrap();
}
将变量 a 和 b 移动到闭包中并修改 a
fn main() {
let a = 1;
let b = 2;
std::thread::spawn(closure_capture::closure!([mut a, b] () {
a += b;
println!("{}", a)
}))
.join()
.unwrap();
}
与异步块一起使用
#[tokio::main]
async fn main() {
let a = 1;
let b = 2;
tokio::spawn(closure_capture::async_block!([mut a, b] async {
a += b;
println!("{}", a)
}))
.await
.unwrap();
}