闭包可以通过以下手段捕获变量:
通过引用:&T 通过可变引用:&mut T 通过值:T
// 不可复制类型(non-copy type)。
let movable = Box::new(3);
// `mem::drop` 要求 `T` 类型本身,所以闭包将会捕获变量的值。这种情况下,
// 可复制类型将会复制给闭包,从而原始值不受影响。不可复制类型必须移动
// (move)到闭包中,因而 `movable` 变量在这里立即移动到了闭包中。
let consume = || {
println!("`movable`: {:?}", movable);
mem::drop(movable);
};
请问在 println! 那一行对变量 movable 的捕获是通过不可变引用 在mem:drop 那一行对变量 movable 的捕获是通过值
也就是说,闭包中可以对相同变量以不同的捕获形式来多次捕获变量,我的理解正确吗?
多谢
1
共 1 条评论, 1 页
评论区
写评论非,你的理解是错误的。