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 的所有权已经转移到了闭包内部
}
相关推荐
新青年57917 小时前
Go语言项目打包上线流程
开发语言·后端·golang
学习编程的Kitty17 小时前
JavaEE初阶——多线程(2)线程的使用
java·开发语言·java-ee
counting money17 小时前
JAVAEE阶段学习指南
java·开发语言
陈随易17 小时前
PaddleOCR-VL可太强了,图片识别转文字的巅峰之作
前端·后端·程序员
Ray6617 小时前
Delete vs Truncate vs Drop
后端
oak隔壁找我17 小时前
IntelliJ IDEA 超详细使用教程
后端
用户685453759776917 小时前
🚀 设计一个每秒生成百万ID的分布式ID生成器
后端
是Yu欸17 小时前
【仓颉语言】原生智能、全场景与强安全的设计哲学
开发语言·安全·鸿蒙·鸿蒙系统·仓颉语言
知其然亦知其所以然17 小时前
一次JPA联表查询,竟让我服务器无限循环崩溃?!
java·后端·spring
杨福瑞17 小时前
数据结构:顺序表讲解(1)
c语言·开发语言·数据结构