首页 > 其他 > 详细

逃逸闭包

时间:2020-05-29 18:23:38      阅读:40      评论:0      收藏:0      [点我收藏+]

跑出父作用域的闭包叫做逃逸闭包

逃逸闭包如果引用了环境变量,那么需要使用move关键字,或者是FnOnce也行

fn test() -> impl Fn()  {
    let s = String::from("");
    move || {
        println!("{}", s);
    }
}

fn main() {
    let f = test();
    f();
}
fn test() -> impl FnOnce()  {
    let s = String::from("");
    || {
        let c = s;
    }
}

fn main() {
    let f = test();
    f();
}

即使引用的环境变量实现了Copy/Clone也不行,因为Fn和FnMut是使用的引用

逃逸闭包

原文:https://www.cnblogs.com/chen8840/p/12988682.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!