小编Mar*_*odi的帖子

为什么移动闭包不获取变量的所有权?

Rust 编程语言

如果你想强制闭包取得它在环境中使用的值的所有权,你可以move在参数列表之前使用关键字

我注意到我的代码不会拥有这些值的所有权。我的代码和给定示例之间的差异是:

  • 使用整数而不是Vec
  • 使x可变而不是不可变

示例 1: Rust 编程语言

fn main() {
    let x = vec![1, 2, 3];

    let equal_to_x = move |z| z == x;

    println!("can't use x here: {:?}", x);

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

    assert!(equal_to_x(y));
}
Run Code Online (Sandbox Code Playgroud)

示例 2:我的代码

fn main() {
    let mut x = 1;

    let equal_to_x = move |z| z == x;

    println!("can use x here: {:?}", x);

    let y = 1;

    assert!(equal_to_x(y));
}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么示例 …

closures rust

1
推荐指数
1
解决办法
1465
查看次数

标签 统计

closures ×1

rust ×1