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 的所有权已经转移到了闭包内部
}
相关推荐
dllmayday11 分钟前
Qt/QML + C++ 双向数据绑定(MVVM 模式的几种常用方法(ChatGPT)
开发语言·c++·qt
韩立学长19 分钟前
基于Springboot酒店管理系统的设计与实现c12044zy(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
han_hanker20 分钟前
统一拦截异常 @RestControllerAdvice
java·开发语言·数据库
liu****22 分钟前
一.脚手架介绍以及部分工具使用
开发语言·数据结构·c++·手脚架开发
资深web全栈开发31 分钟前
深入理解 Google Wire:Go 语言的编译时依赖注入框架
开发语言·后端·golang
忘记92635 分钟前
什么是spring boot
java·spring boot·后端
ohoy36 分钟前
EasyPoi 数据脱敏
开发语言·python·excel
Hello World呀38 分钟前
Java实现手机号和身份证号脱敏工具类
java·开发语言
expect7g38 分钟前
Paimon源码解读 -- Compaction-6.CompactStrategy
大数据·后端·flink
曹牧40 分钟前
Java:serialVersionUID
java·开发语言