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 的所有权已经转移到了闭包内部
}
相关推荐
空中海几秒前
03 MyBatis Spring Boot 集成、事务、测试与工程化体系
spring boot·后端·mybatis
ElonMuscle3 分钟前
GO环境速建笔记
后端
csgo打的菜又爱玩5 分钟前
11.JobManager 启动流程总结
大数据·开发语言·qt·microsoft·flink
用户298698530149 分钟前
Java 从零生成 Word 文档:段落、图片与表格操作
java·后端
2401_8332693010 分钟前
Java IO流:从字节到字符的桥梁
java·开发语言
hhzz10 分钟前
第1天:初识Python
开发语言·python·学习编程
江沉晚呤时14 分钟前
C# 运行时类型创建:深入探索动态类型生成技术
开发语言·c#
SimonKing38 分钟前
OpenCode 在 IDEA 中使用 ACP 协议 VS 直接使用 TUI,哪个编程方式更是你的菜?
java·后端·程序员
Gopher_HBo39 分钟前
Disruptor多生产者多消费者分析
后端