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 的所有权已经转移到了闭包内部
}
相关推荐
缺点内向14 小时前
C#: 高效移动与删除Excel工作表
开发语言·c#·.net·excel
老前端的功夫15 小时前
Web应用的永生之术:PWA落地与实践深度指南
java·开发语言·前端·javascript·css·node.js
程序员爱钓鱼15 小时前
Python编程实战:面向对象与进阶语法——类型注解与代码规范(PEP 8)
后端·python·ipython
程序员爱钓鱼15 小时前
Python实战:用高德地图API批量获取地址所属街道并写回Excel
后端·python·ipython
Yeats_Liao15 小时前
时序数据库系列(三):InfluxDB数据写入Line Protocol详解
数据库·后端·时序数据库
王元_SmallA16 小时前
Redis Desktop Manager(Redis可视化工具)安装
java·后端
ᐇ95916 小时前
Java HashMap深度解析:数据结构、原理与实战指南
java·开发语言·数据结构
好好研究16 小时前
Spring框架 - 开发方式
java·后端·spring
QT 小鲜肉16 小时前
【个人成长笔记】在 Linux 系统下撰写老化测试脚本以实现自动压测效果(亲测有效)
linux·开发语言·笔记·单片机·压力测试
程序员龙一16 小时前
C++之static_cast关键字
开发语言·c++·static_cast