色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美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次閱讀
    主站蜘蛛池模板: 97精品国偷拍自产在线| 国产视频这里只有精品| 97免费在线视频| 99re8久久热在线视频| 欧美日韩亚洲第一区在线| 欧美最猛12teevideos欧美| 秋霞伦理电影在2017韩国在线伦| 神马伦理不卡午夜电影| 亚洲电影不卡| 中文字幕完整高清版| 超级碰碰青草久热国产| 国产色综合色产在线视频| 久久国产欧美| 前后灌满白浆护士| 性欧美13处14处破| 中文字幕无码亚洲视频| 草莓视频在线看免费高清观看 | 欧美性猛交AAA片| 色欲档案之麻雀台上淫| 亚洲精品永久免费| 在线伦理电影网| jlzz中国jizz日本老师水多| 国产高清美女一级毛片久久| 丰满少妇67194视频| 国产毛A片久久久久久无码| 久久re热在线视频精69| 皮皮色狼网| 亚洲精品久久YY5099| 99久久国内精品成人免费| 国产精品高清视频在线| 久久亚洲一级α片| 色欲AV精品人妻一二三区| 伊人无码高清| 中文字幕天堂久久精品| 被强J高H纯肉公交车啊| 好硬好湿好大再深一点动态图| 好妞操| 女人一级毛片免费视频观看| 午夜十八岁禁| 97在线视频免费人妻| 国产女人喷潮视频免费|