NLL 导致的非直觉的作用域扩大
1. NLL 完全无视词法作用域
1.1. 是否可以认为 NLL 在fb.set(&b);
处缩短了fb
的起始生存期以配合b
?
1.2. 应该认为 NLL 缩短了fb
还是延长了b
的生存期?
struct MyCell
2. 强制延长外部变量生存期得到符合直觉的编译失败
struct MyCell
3.Drop
导致隐式生存期延长而编译失败
主代码与 1 完全相同, 与 1 相比仅多一个空Drop
, 而编译失败原因同 2
struct MyCell
4. 编译失败 循环使得fb
生存期不能缩短
有可能rust升级使其可通过编译
struct MyCell
5. 编译成功 基本等同于 4
NLL 过于智能的消除了loop
struct MyCell
审核编辑:汤梓红
-
代码
+关注
关注
30文章
4556浏览量
66805 -
编译
+关注
关注
0文章
615浏览量
32397
原文标题:NLL 导致的非直觉的作用域扩大
文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论