当前位置: 首页 > article >正文

Rust 中Self 关键字的两种不同用法

在 Rust 中,Self 是一个特殊的类型标识符,它代表了当前结构体或枚举类型。在结构体或枚举类型的定义中,Self 可以用于表示该类型的任何地方,包括方法签名、构造函数、类型别名等。

  1. 构造函数中的 Self: 在这段代码中:
 pub fn new(_session_id: u32, _channel_id: u32) -> Self {
       Self {
           // ...
       }
   }

这里的Self是结构体或枚举类型的占位符。在构造函数new的返回类型和内部实例化部分使用Self时,它代表的是当前实现这个方法的结构体或枚举类型本身。所以在这个上下文中,Self { ... } 创建了一个新的结构体实例,并初始化了所有字段。

在以下代码中,Self { value: 42 } 是一个构造函数,用于创建一个 Example 结构体的新实例,其中value成员变量被初始化为 42

struct Example {
    value: i32,
}

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

在给定的代码片段中,Self { … } 表示的是当前结构体或枚举类型的构造函数。它用于创建一个新的实例,并且可以接受一些参数来初始化该实例的成员变量。

  1. 关联函数(非方法)中的 self 或 &self、&mut self 等: 在方法签名中,如:
 fn some_method(&self) {}

这里的 self 表示方法接收者。在方法定义中,self、&self 和 &mut self 分别表示:

  • self: 消耗所有权,意味着调用此方法会移动结构体的所有权.
  • &self: 获取结构体的一个不可变引用,允许访问但不修改结构体内容。
  • &mut self: 获取结构体的一个可变引用,允许在方法执行期间修改结构体内容。

http://www.kler.cn/a/274658.html

相关文章:

  • 使用 datamodel-code-generator 从 MySQL 生成 Python 模型
  • Windows安全中心(病毒和威胁防护)的注册
  • 可访问性(Accessibility)的重要性及实现:构建包容性的数字世界
  • AlipayHK支付宝HK接入-商户收款(PHP)
  • 关于如何做技术文档
  • PHY6239:具有高精确度AFE的无线MCU芯片,常用在智能穿戴上
  • 微信小程序 canvas层级过高覆盖原生组件
  • Linux 服务升级:MySQL 主从(半同步复制) 平滑升级
  • 【linux】Debian访问Debian上的共享目录
  • 【生活知识-茶叶】
  • kafka2.x版本配置SSL进行加密和身份验证
  • MacOS Xcode 使用LLDB调试Qt的 QString
  • 使用华为云HECS服务器+nodejs开启web服务
  • Flutter-底部弹出框(Widget层级)
  • 20240319在WIN10下给K6000按照驱动程序
  • MySQL 搭建双主复制服务 并 通过 HAProxy 负载均衡
  • 动态规划练习第一天
  • Java 设计模式系列:行为型-状态模式
  • 智能合约语言(eDSL)—— 使用rust实现eDSL的原理
  • 鸿蒙开发实战:【系统服务管理部件】
  • 多特征变量序列预测(11) 基于Pytorch的TCN-GRU预测模型
  • 基于springboot+vue的智慧生活商城系统
  • Stability AI 3D:开创3D视觉技术新篇章,提升多视角连贯性与生成质量
  • 杰发科技AC7801——Flash数据读取
  • 静态页面负载均衡
  • 【NLP笔记】Transformer