Rust move

一、move有什么用

当你在闭包前 加上 move 关键字 时,闭包会强制获取 其所需变量的所有 权。这意味着即使在闭包外部变量的所有权转移给闭包闭包之外的代码不能再使用这些变量

看两段代码

rust 复制代码
fn main() {
    let x = String::from("value");

    let closure = || {
        println!("x: {}", x);
    };

    closure(); // 调用闭包

    println!("x: {}", x); // 这一行将会导致编译正确,因为变量 x 的所有权没有转移到了闭包内部
}

使用move之后

rust 复制代码
fn main() {
    let x = String::from("value");

    let closure = move|| {
        println!("x: {}", x);
    };

    closure(); // 调用闭包

    println!("x: {}", x); // 这一行将会导致编译错误,因为变量 x 的所有权已经转移到了闭包内部
}
相关推荐
方便面不加香菜18 小时前
C++ 类和对象(二)
开发语言·c++
@大迁世界18 小时前
20.“可复用组件”具体指的是什么?如何设计与产出这类组件?.
开发语言·前端·javascript·ecmascript
有味道的男人18 小时前
电商效率翻倍:用 Open Claw 对接 1688 接口,快速实现图片选品 + 货源监控
java·开发语言·数据库
froginwe1118 小时前
Chart.js 雷达图:深入解析与实际应用
开发语言
枫叶丹418 小时前
【HarmonyOS 6.0】屏幕管理新特性:多屏坐标转换详解
开发语言·华为·harmonyos
Dxy123931021618 小时前
Python有哪些方法可以进行文本纠错
开发语言·python
海兰18 小时前
【springboot】gradle快速镜像配置
spring boot·笔记·后端
swear0118 小时前
【VSCODE 插件 rust-analyzer 使用】打开文件夹
ide·vscode·rust
武超杰18 小时前
SpringBoot 整合 Spring Security 实现权限控制
spring boot·后端·spring