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 的所有权已经转移到了闭包内部
}
相关推荐
AI首席情报员_阿布14 分钟前
Numa:用 Rust 从零造一个 DNS 解析器,顺手解决了开发者最头疼的几件事
人工智能·rust·dns
|_⊙15 分钟前
C++ 智能指针
开发语言·c++
Developer_Niuge16 分钟前
告别翻不动的 1000+ 书签:开源 Chrome / Edge 浏览器书签管理插件 Smart Bookmark 0.2 发布
前端·后端
电子科技圈18 分钟前
IAR作为Qt Group独立BU携两项重磅汽车电子应用开发方案首秀北京车展
开发语言·人工智能·汽车·软件工程·软件构建·代码规范·设计规范
代码中介商19 分钟前
C语言指针深度解析:从数组指针到函数指针
c语言·开发语言
ElevenPlus21 分钟前
【 AI智能体时代:一名Javaer的技术随想录】MCP服务部署架构
后端
Jasmine_llq34 分钟前
《B4356 [GESP202506 二级] 数三角形》
开发语言·c++·双重循环枚举算法·顺序输入输出算法·去重枚举算法·整除判断算法·计数统计算法
千寻girling35 分钟前
RabbitMQ 详细教程(38K字数)
java·后端·面试
止语Lab43 分钟前
Go vs Java GC:同一场延迟战争的两条路
java·开发语言·golang
Rust研习社43 分钟前
Rust 多线程从入门到实战
开发语言·后端·rust