日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Rust 中Self 關(guān)鍵字的兩種不同用法

作者:星河繁 更新時(shí)間: 2024-03-19 編程語(yǔ)言

在 Rust 中,Self 是一個(gè)特殊的類型標(biāo)識(shí)符,它代表了當(dāng)前結(jié)構(gòu)體或枚舉類型。在結(jié)構(gòu)體或枚舉類型的定義中,Self 可以用于表示該類型的任何地方,包括方法簽名、構(gòu)造函數(shù)、類型別名等。

  1. 構(gòu)造函數(shù)中的 Self: 在這段代碼中:
 pub fn new(_session_id: u32, _channel_id: u32) -> Self {
       Self {
           // ...
       }
   }

這里的Self是結(jié)構(gòu)體或枚舉類型的占位符。在構(gòu)造函數(shù)new的返回類型和內(nèi)部實(shí)例化部分使用Self時(shí),它代表的是當(dāng)前實(shí)現(xiàn)這個(gè)方法的結(jié)構(gòu)體或枚舉類型本身。所以在這個(gè)上下文中,Self { ... } 創(chuàng)建了一個(gè)新的結(jié)構(gòu)體實(shí)例,并初始化了所有字段。

在以下代碼中,Self { value: 42 } 是一個(gè)構(gòu)造函數(shù),用于創(chuàng)建一個(gè) Example 結(jié)構(gòu)體的新實(shí)例,其中value成員變量被初始化為 42

struct Example {
    value: i32,
}

impl Example {
    fn new(value: i32) -> Self {
        Self { value }
    }
}

在給定的代碼片段中,Self { … } 表示的是當(dāng)前結(jié)構(gòu)體或枚舉類型的構(gòu)造函數(shù)。它用于創(chuàng)建一個(gè)新的實(shí)例,并且可以接受一些參數(shù)來(lái)初始化該實(shí)例的成員變量。

  1. 關(guān)聯(lián)函數(shù)(非方法)中的 self 或 &self、&mut self 等: 在方法簽名中,如:
 fn some_method(&self) {}

這里的 self 表示方法接收者。在方法定義中,self、&self 和 &mut self 分別表示:

  • self: 消耗所有權(quán),意味著調(diào)用此方法會(huì)移動(dòng)結(jié)構(gòu)體的所有權(quán).
  • &self: 獲取結(jié)構(gòu)體的一個(gè)不可變引用,允許訪問(wèn)但不修改結(jié)構(gòu)體內(nèi)容。
  • &mut self: 獲取結(jié)構(gòu)體的一個(gè)可變引用,允許在方法執(zhí)行期間修改結(jié)構(gòu)體內(nèi)容。

原文鏈接:https://blog.csdn.net/weixin_40482577/article/details/136762520

  • 上一篇:沒(méi)有了
  • 下一篇:沒(méi)有了
欄目分類
最近更新