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 的所有权已经转移到了闭包内部
}
相关推荐
REDcker2 分钟前
C++ 崩溃堆栈捕获库详解
linux·开发语言·c++·tcp/ip·架构·崩溃·堆栈
幽络源小助理11 分钟前
基于SpringBoot+Vue的实验室管理系统源码 | 教育类JavaWeb项目免费下载 – 幽络源
vue.js·spring boot·后端
qq_4061761414 分钟前
JavaScript闭包:从底层原理到实战
开发语言·前端·javascript
沐知全栈开发14 分钟前
`.toggleClass()` 方法详解
开发语言
Rysxt_17 分钟前
鸿蒙开发语言ArkTS全面介绍
开发语言·华为·harmonyos
三天不学习19 分钟前
【入门教学】Python包管理与pip常用包
开发语言·python·pip
沐知全栈开发29 分钟前
桥接模式(Bridge Pattern)
开发语言
问道飞鱼33 分钟前
【Rust开发知识】Actix-web 开发环境搭建完整教程
开发语言·前端·rust·actix-web
凯哥197043 分钟前
VS Code 终端崩溃问题分析与解决方案
后端
William_cl1 小时前
ASP.NET View 层核心:布局页_Layout.cshtml 与 @RenderBody () 通关指南
后端·asp.net