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 小时前
CSS 下拉菜单
开发语言
keyborad pianist2 小时前
Web开发 Day1
开发语言·前端·css·vue.js·前端框架
坚持就完事了2 小时前
Python的类型注解
开发语言·python
wjs20243 小时前
HTML URL 编码
开发语言
风象南3 小时前
无文档遗留系统的逆向梳理:利用 AI 重建架构视图
后端
wjs20243 小时前
Lua 循环
开发语言
Evand J3 小时前
matlab GUI制作界面的一些笔记(入门)
开发语言·笔记·matlab
我是大猴子3 小时前
Java面经
java·开发语言
Never_Satisfied3 小时前
在c#中,如何删除字符串中的第x个字符
开发语言·c#
_nirvana_w_3 小时前
Qt项目链接库时遇到的坑:-l选项的正确用法
开发语言·c++·qt·qt框架·elawidgettools