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

學(xué)無先后,達者為師

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

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

作者:星河繁 更新時間: 2024-03-19 編程語言

在 Rust 中,Self 是一個特殊的類型標識符,它代表了當前結(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)部實例化部分使用Self時,它代表的是當前實現(xiàn)這個方法的結(jié)構(gòu)體或枚舉類型本身。所以在這個上下文中,Self { ... } 創(chuàng)建了一個新的結(jié)構(gòu)體實例,并初始化了所有字段。

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

struct Example {
    value: i32,
}

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

在給定的代碼片段中,Self { … } 表示的是當前結(jié)構(gòu)體或枚舉類型的構(gòu)造函數(shù)。它用于創(chuàng)建一個新的實例,并且可以接受一些參數(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)用此方法會移動結(jié)構(gòu)體的所有權(quán).
  • &self: 獲取結(jié)構(gòu)體的一個不可變引用,允許訪問但不修改結(jié)構(gòu)體內(nèi)容。
  • &mut self: 獲取結(jié)構(gòu)體的一個可變引用,允許在方法執(zhí)行期間修改結(jié)構(gòu)體內(nèi)容。

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

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新