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 的所有权已经转移到了闭包内部
}
相关推荐
星火开发设计7 分钟前
类模板:实现通用数据结构的基础
java·开发语言·数据结构·c++·html·知识
bugcome_com7 分钟前
# C# 变量作用域详解
开发语言·c#
阿里嘎多学长8 分钟前
2026-02-13 GitHub 热点项目精选
开发语言·程序员·github·代码托管
汽车软件工程师00117 分钟前
vector autosar配置一个CAN接收报文,RTE层发现并未接收到信号,怎样查这个问题
开发语言·autosar
xuzhiqiang072426 分钟前
【wiki知识库】07.用户管理后端SpringBoot部分
spring boot·后端·状态模式
寻寻觅觅☆29 分钟前
东华OJ-基础题-122-循环数(C++)-难度难
开发语言·c++
谭光志38 分钟前
OpenClaw 安装与运行教程
前端·后端·ai编程
Zachery Pole1 小时前
JAVA_04_判断与循环
java·开发语言
懒惰成性的1 小时前
11.Java的String类
java·开发语言
金牌归来发现妻女流落街头1 小时前
【Spring Boot 中 ResponseEntity 用法全解析】
spring boot·后端