2020年5月29日
摘要: 跑出父作用域的闭包叫做逃逸闭包 逃逸闭包如果引用了环境变量,那么需要使用move关键字,或者是FnOnce也行 fn test() -> impl Fn() { let s = String::from(""); move || { println!("{}", s); } } fn main() 阅读全文
posted @ 2020-05-29 17:33 chen8840 阅读(376) 评论(0) 推荐(0) 编辑
摘要: move关键字是强制让环境变量的所有权转移到闭包中而不管是不是发生了所有权的转移 move关键字和匿名函数是否是FnOnce没有必然联系,之和匿名函数体有关 当匿名函数体里转移了环境变量的所有权的时候,匿名函数就是FnOnce。 当匿名函数体里改变了环境变量的值的时候,匿名函数就是FnMut。 否则 阅读全文
posted @ 2020-05-29 15:04 chen8840 阅读(657) 评论(0) 推荐(0) 编辑
摘要: 继承结构 FnOnce FnMut: FnOnce Fn: FnMut FnOnce就是说会转移闭包捕获变量的所有权,在闭包前加上move关键字可以限定此闭包为FnOnce move关键字是强制让环境变量的所有权转移到闭包中而不管是不是发生了所有权的转移 #![feature(core_intrin 阅读全文
posted @ 2020-05-29 10:42 chen8840 阅读(701) 评论(0) 推荐(0) 编辑