打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
rust中带move闭包和不带move闭包有什么区别

福哥答案2020-11-01:

1.是否是同一个变量:带move闭包,函数外和函数内的同名变量不是同一个变量。不带move闭包,函数外和函数内的同名变量是同一个变量。
2.执行完闭包后:带move闭包,使用闭包变量会产生【error[E0382]: borrow of moved value: p】错误。不带move闭包,使用闭包变量,正常执行。

rust代码如下:

struct Point {
    x: i64,
    y: i64,
}
fn main(){
    if true{

        let mut p = Point { x: 25, y: 25 };
        println!("p address: {:p}", &p);
        (|| {
            println!("不带move闭包,p address: {:p}", &p);
        })();
        println!("p address: {:p}", &p);
        println!("------------------------------");
    }
    if true{
        let mut p = Point { x: 25, y: 25 };
        println!("p address: {:p}", &p);
        (move|| {
            println!("带move闭包,p address: {:p}", &p);
        })();
        //println!("p address: {:p}", &p);//error[E0382]: borrow of moved value: `p`
    }
}

执行结果如下:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Rust 语法梳理与总结(中)
图解 Rust 所有权与生命周期
Java类变量和成员变量初始化过程
Rust基础学习笔记(零):复习基本知识
Rust学习笔记(3)- 变量和可变属性
​半小时入门Rust,这是一篇Rust代码风暴
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服