第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編譯器建議我添加一個'靜態(tài)生命周期,因為參數(shù)類型可能不夠長,但我不認為這是我想要的

編譯器建議我添加一個'靜態(tài)生命周期,因為參數(shù)類型可能不夠長,但我不認為這是我想要的

編譯器建議我添加一個'靜態(tài)生命周期,因為參數(shù)類型可能不夠長,但我不認為這是我想要的我正在嘗試實現(xiàn)看起來像這個最小例子的東西:trait Bar<T> {}struct Foo<T> {     data: Vec<Box<Bar<T>>>,}impl<T> Foo<T> {     fn add<U: Bar<T>>(&mut self, x: U) {         self.data.push(Box::new(x));     }}由于Rust默認為(據(jù)我所知)pass-by-ownership,我的心理模型認為這應(yīng)該有效。該add方法獲取對象的所有權(quán),x并且能夠?qū)⒋藢ο笠苿拥絘中,Box因為它知道完整類型U(而不僅僅是特征Bar<T>)。一旦進入a Box,框內(nèi)項目的生命周期應(yīng)該與框的實際生命周期相關(guān)聯(lián)(例如,當pop()從矢量中刪除時,對象將被銷毀)。然而,很明顯,編譯器不同意(并且我確定比我更了解...),要求我考慮添加一個'static生命周期限定符(E0310)。我99%肯定這不是我想要的,但我不確定我應(yīng)該做什么。為了澄清我的想法并幫助識別誤解,我的心理模型來自C ++背景,是:Box<T> 本質(zhì)上是 std::unique_ptr<T>如果沒有任何注釋,則變量按值傳遞,Copy否則傳遞rvalue-reference與參考注釋,&大致const&和&mut大致&默認生命周期是詞法范圍
查看完整描述

2 回答

?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

讓我考慮添加一個'靜態(tài)終身限定符(E0310)。我99%肯定這不是我想要的,但我不確定我應(yīng)該做什么。

是的。編譯器不需要&'static引用,它想要U: 'static。

具有U: 'staticU包含生命周期小于的引用的平均值'static。這是必需的,因為您希望將U實例放在沒有生命周期的結(jié)構(gòu)中。

trait Bar<T> {}struct Foo<T> {
    data: Vec<Box<dyn Bar<T>>>,}impl<T> Foo<T> {
    fn add<U: Bar<T> + 'static>(&mut self, x: U) {
        self.data.push(Box::new(x));
    }}


查看完整回答
反對 回復(fù) 2019-08-23
  • 2 回答
  • 0 關(guān)注
  • 556 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號