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 的所有权已经转移到了闭包内部
}
相关推荐
花褪残红青杏小12 小时前
Rust图像处理第8节-暗角 & 复古胶片特效:四周衰减中心高亮
rust·webassembly·图形学
葫芦和十三13 小时前
图解 MongoDB 23|两地三中心:跨可用区部署怎么扛机房故障
后端·mongodb·agent
勇哥java实战分享14 小时前
PaddleOCR 太慢?我换成 RapidOCR 后,速度直接起飞
后端
苏三说技术19 小时前
LangChain4j 和 LangGraph4j,哪个更好?
后端
ServBay20 小时前
7 个AI开发中真正用得上的 MCP Server,配合Claude Code食用效果更佳
后端·claude·mcp
妙码生花20 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十五):优化细节、网络请求封装
前端·后端·ai编程
用户67570498850221 小时前
Go 语言里判断字符串为空,90% 的人都写错了!
后端·go
用户67570498850221 小时前
Go 进阶必修:90% 的人都没用对的“表驱动法”
后端·go
小兔崽子去哪了21 小时前
Java 生成二维码解决方案
java·后端