NLL 導(dǎo)致的非直覺(jué)的作用域擴(kuò)大
1. NLL 完全無(wú)視詞法作用域
1.1. 是否可以認(rèn)為 NLL 在fb.set(&b);
處縮短了fb
的起始生存期以配合b
?
1.2. 應(yīng)該認(rèn)為 NLL 縮短了fb
還是延長(zhǎng)了b
的生存期?
struct MyCell
2. 強(qiáng)制延長(zhǎng)外部變量生存期得到符合直覺(jué)的編譯失敗
struct MyCell
3.Drop
導(dǎo)致隱式生存期延長(zhǎng)而編譯失敗
主代碼與 1 完全相同, 與 1 相比僅多一個(gè)空Drop
, 而編譯失敗原因同 2
struct MyCell
4. 編譯失敗 循環(huán)使得fb
生存期不能縮短
有可能rust升級(jí)使其可通過(guò)編譯
struct MyCell
5. 編譯成功 基本等同于 4
NLL 過(guò)于智能的消除了loop
struct MyCell
審核編輯:湯梓紅
-
代碼
+關(guān)注
關(guān)注
30文章
4827瀏覽量
69052 -
編譯
+關(guān)注
關(guān)注
0文章
661瀏覽量
33041
原文標(biāo)題:NLL 導(dǎo)致的非直覺(jué)的作用域擴(kuò)大
文章出處:【微信號(hào):Rust語(yǔ)言中文社區(qū),微信公眾號(hào):Rust語(yǔ)言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論