【发布时间】:2025-11-23 19:50:01
【问题描述】:
假设我们有以下代码,我在其中定义了一个名为 closure 的闭包。在这个闭包中,我想通过不可变引用(&T)使用外部x,同时通过获取所有权使用y。我怎样才能做到这一点?如果我使用move,闭包中使用的所有外部变量都将被移动到闭包中。而且这里的外部变量y 也是可复制的。
let x: i32 = 1;
let y: i32 = 2;
let closure = || {
println!("{}", x); // make sure x is used by &T.
// println!("{}", y); // how can I use y by taking its ownership?
};
closure();
【问题讨论】:
-
在关闭之前添加
let x = &x;行?