網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
在 Rust 中,Self 是一個(gè)特殊的類型標(biāo)識(shí)符,它代表了當(dāng)前結(jié)構(gòu)體或枚舉類型。在結(jié)構(gòu)體或枚舉類型的定義中,Self 可以用于表示該類型的任何地方,包括方法簽名、構(gòu)造函數(shù)、類型別名等。
- 構(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í)例的成員變量。
- 關(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)有了
相關(guān)推薦
- 2022-08-02 Python+Selenium實(shí)現(xiàn)瀏覽器標(biāo)簽頁(yè)的切換_python
- 2021-11-08 Linux常用硬盤管理相關(guān)命令介紹_Linux
- 2022-04-04 webpack-插件: plugin的使用(clean-webpack-plugin)
- 2022-09-13 Django?中使用日志的方法_python
- 2022-07-19 git忽略ssl認(rèn)證和git每次提交代碼都要輸入帳號(hào)和密碼
- 2022-04-03 Flutter折疊控件使用方法詳解_Android
- 2023-04-07 React替換傳統(tǒng)拷貝方法的Immutable使用_React
- 2023-05-24 python實(shí)現(xiàn)對(duì)AES加密的視頻數(shù)據(jù)流解密的方法_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支