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 的所有权已经转移到了闭包内部
}
相关推荐
格林威2 分钟前
工业相机异常处理实战:断连重连、丢帧检测、超时恢复状态机
开发语言·人工智能·数码相机·计算机视觉·视觉检测·机器视觉·工业相机
Gse0a362g5 分钟前
Go - Zerolog使用入门
开发语言·后端·golang
KhalilRuan6 分钟前
Burst编译器的底层原理
java·开发语言
Shirley~~10 分钟前
力扣hot100:每日温度
开发语言·javascript·ecmascript
Renhao-Wan19 分钟前
Docker 核心原理详解:镜像、容器、Namespace、Cgroups 与 UnionFS
java·后端·docker·容器
froginwe1131 分钟前
《WebPages 邮局》
开发语言
@insist12341 分钟前
网络工程师-广域网与接入网技术(一):核心协议与流量控制
开发语言·网络·网络工程师·软考·软件水平考试
ˇasushiro1 小时前
终端工具配置
开发语言·ios·swift
EFCY1MJ901 小时前
ASP.NET MVC 1.0 (五) ViewEngine 深入解析与应用实例
后端·asp.net·mvc
不写八个1 小时前
PHP教程005:配置ThinkPHP环境
开发语言·php