色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NLL導(dǎo)致的非直覺的作用域擴(kuò)大

jf_wN0SrCdH ? 來源:Rust語言中文社區(qū) ? 作者:Rust語言中文社區(qū) ? 2022-11-24 11:29 ? 次閱讀

NLL 導(dǎo)致的非直覺的作用域擴(kuò)大

1. NLL 完全無視詞法作用域

1.1. 是否可以認(rèn)為 NLL 在fb.set(&b);處縮短了fb的起始生存期以配合b?
1.2. 應(yīng)該認(rèn)為 NLL 縮短了fb還是延長了b的生存期?


	

struct MyCell(T); impl MyCell { pub fn set(&mut self, t: T) { self.0 = t; } } let a = 3; let mut fb = MyCell(&a); // 將 fb 綁定到 a 的生存期 let _ = { let b = 4; fb.set(&b); false // 直覺上 b 在此結(jié)束生存期 }; // 直覺上 fb 在此結(jié)束生存期 // NLL 智能的使 b 和 fb 的生存期同時結(jié)束, 使得 fb 可以使用 b

2. 強制延長外部變量生存期得到符合直覺的編譯失敗


	

struct MyCell(T); impl MyCell { pub fn set(&mut self, t: T) { self.0 = t; } } let a = 3; let mut fb = MyCell(&a); // 將 fb 綁定到 a 的生存期 let _ = { let b = 4; fb.set(&b); false // b 在此結(jié)束生存期 }; fb; // 強制延長 fb 生存期

3.Drop導(dǎo)致隱式生存期延長而編譯失敗

主代碼與 1 完全相同, 與 1 相比僅多一個空Drop, 而編譯失敗原因同 2


	

struct MyCell(T); impl MyCell { pub fn set(&mut self, t: T) { self.0 = t; } } impl Drop for MyCell { fn drop(&mut self) {} } let a = 3; let mut fb = MyCell(&a); // 將 fb 綁定到 a 的生存期 let _ = { let b = 4; fb.set(&b); false // b 在此結(jié)束生存期 }; // drop 導(dǎo)致的隱式延長 fb 生存期

4. 編譯失敗 循環(huán)使得fb生存期不能縮短

有可能rust升級使其可通過編譯


	

struct MyCell(T); impl MyCell { pub fn set(&mut self, t: T) { self.0 = t; } } let a = 3; let mut fb = MyCell(&a); // 將 fb 綁定到 a 的生存期 let _ = loop { // loop 使得 fb 必須在此有效 而不能使 b 滿足此要求 let b = 4; fb.set(&b); if true { break false } // b 在此結(jié)束生存期 }; // fb 在此結(jié)束生存期

5. 編譯成功 基本等同于 4

NLL 過于智能的消除了loop


	

struct MyCell(T); impl MyCell { pub fn set(&mut self, t: T) { self.0 = t; } } let a = 3; let mut fb = MyCell(&a); // 將 fb 綁定到 a 的生存期 let _ = loop { let b = 4; fb.set(&b); break false; // 過于智能的消除了 loop };


審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4801

    瀏覽量

    68735
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    659

    瀏覽量

    32903

原文標(biāo)題:NLL 導(dǎo)致的非直覺的作用域擴(kuò)大

文章出處:【微信號:Rust語言中文社區(qū),微信公眾號:Rust語言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    詞法作用和閉包

    #hello,JS:14閉包(詞法作用
    發(fā)表于 05-20 15:35

    作用作用鏈知識

    #hello,JS:04作用作用
    發(fā)表于 09-10 10:21

    介紹一些與變量相關(guān)的存儲屬性與作用

    目錄前言一、存儲類&作用&生命周期&鏈接屬性的概念解析二、linux下C程序 的內(nèi)存映像三、存儲類相關(guān)的關(guān)鍵字四、作用詳解五、變量的生命周期七、鏈接屬性前言本篇文章將會
    發(fā)表于 02-14 07:00

    python變量的作用

    python變量的作用1. 作用Python的作用可以分為四種:L (Local) 局部
    發(fā)表于 03-03 16:50

    MCU中局部變量的作用是什么?

    MCU中局部變量的作用是什么
    發(fā)表于 10-09 08:51

    c語言變量的作用和存儲類別

    c語言變量的作用和存儲類別簡述,很不錯哦。
    發(fā)表于 07-14 17:12 ?0次下載

    關(guān)于Java變量的作用分析

    目錄 1.靜態(tài)作用與動態(tài)作用 2.變量的作用 3.Java 中變量的
    發(fā)表于 09-25 16:28 ?0次下載

    Java中bean的作用

    java開發(fā)者都會在實體對象的屬性中加上private關(guān)鍵字,而在業(yè)務(wù)類對外發(fā)放的方法中寫上public關(guān)鍵字,這并不是習(xí)慣,而是開發(fā)者深諳其道,這就是java對象中filed的作用。 舉個
    發(fā)表于 09-25 16:36 ?0次下載
    Java中bean的<b class='flag-5'>作用</b><b class='flag-5'>域</b>

    基于修正的直覺模糊集成算子

    已有的一些直覺模糊集成算子在處理一些特殊直覺模糊數(shù)時會出現(xiàn)反直覺現(xiàn)象。首先介紹了兩個直覺模糊集成算子和直覺模糊數(shù)的比較方法。接著,舉例說明了
    發(fā)表于 11-17 14:36 ?9次下載

    直覺multiplicative集

    針對軟直覺模糊集在決策中出現(xiàn)的部分反直覺的現(xiàn)象,結(jié)合直覺multiplicative集,首先提出了一種新的軟集模型軟直覺multiplicative集,推廣了軟集和
    發(fā)表于 11-25 10:35 ?0次下載

    Javascript作用-前端開發(fā)必知的技巧

    深入理解Javascript的工作原理以及特性,只有這樣才能以不變應(yīng)萬變。 今天IT培訓(xùn)網(wǎng)給大家分享的是:淺談Javascript作用 什么是作用? Js中的變量或者函數(shù)能夠被訪
    發(fā)表于 04-01 17:49 ?271次閱讀

    程度粗糙直覺模糊集模型研究分析綜述

    針對經(jīng)典粗糙直覺模糊集理論僅考慮了集合中的最小最大隸屬度與隸屬度,而忽略了介于二者之間的隸屬度與隸屬度的問題,從程度粗糙集的角度對其進(jìn)行了分析研究。首先,將程度粗糙集引入到經(jīng)典粗糙直覺
    發(fā)表于 06-09 15:54 ?15次下載

    python變量的作用

    python變量的作用 1. 作用 Python的作用可以分為四種: L (Local)
    的頭像 發(fā)表于 03-03 16:50 ?1632次閱讀

    解讀Spring 的內(nèi)置作用及開發(fā)應(yīng)用

    本文詳細(xì)解析了 Spring 的內(nèi)置作用,包括 Singleton、Prototype、Request、Session、Application 和 WebSocket 作用,并通過
    發(fā)表于 07-01 11:51 ?318次閱讀
    解讀Spring 的內(nèi)置<b class='flag-5'>作用</b><b class='flag-5'>域</b>及開發(fā)應(yīng)用

    CAN數(shù)據(jù)幀的各個及其作用

    CAN數(shù)據(jù)幀由多個組成,包括幀起始、仲裁、控制、數(shù)據(jù)和幀結(jié)束。每個都有其特定的作用
    的頭像 發(fā)表于 07-24 15:10 ?1485次閱讀
    主站蜘蛛池模板: 亚洲免费无码中文在线| music radio在线收听| 国产偷国产偷亚洲高清app| 午夜福利32集云播| 好男人社区| 67194免费入口| 日日摸夜夜添无码AVA片| 国产区免费在线观看| 折磨比基尼美女挠肚子| 日本19禁啪啪吃奶大尺度| 国产精品无码人妻99999| 樱花动漫成人隐藏入口| 人人插人人射| 国内精品久久久久影院亚洲| 91av电影在线观看| 涩涩伊人久久无码欧美| 久久高清内射无套| 成人免费视频在线| 亚洲熟女乱色一区二区三区| 欧美激情精品久久久久| 国产性夜夜春夜夜爽1A片| 99视频精品全部 国产| 亚洲国产成人精品无码区5566| 久久综合久综合久久鬼色| 俄罗斯19girl video9| 伊人久久综合影院首页| 色欲国产麻豆精品AV免费| 久久精品午夜一区二区福利| 岛国大片在线播放高清| 中文字幕视频在线观看| 忘忧草研究所 麻豆| 老鸭窝毛片| 国产亚洲精品久久久久久无码网站| 99免费在线观看视频| 亚洲国产精品99久久久久久| 欧美日韩一区不卡在线观看| 回复术士勇者免费观看全集| 动漫人物差差差30分钟免费看| 找老女人泻火对白自拍| 亚洲国产剧情中文视频在线 | 亚洲AV久久婷婷蜜臀无码不卡|