首页 > 其他分享 >rust中的self与Self

rust中的self与Self

时间:2023-04-28 17:26:09浏览次数:36  
标签:Point self f32 other fn Self rust

self

self 是一个代表类型实例(或者是类型的引用或者是值)的关键字,在 Rust 的方法中使用 self 可以引用当前类型的实例或者类型本身

具体来说,当我们定义一个方法时,使用 self 关键字作为方法的第一个参数可以让我们在调用该方法时直接访问类型实例本身

struct Point {
    x: f32,
    y: f32,
}

impl Point {
    fn distance(&self, other: &Point) -> f32 {
        let dx = self.x - other.x;
        let dy = self.y - other.y;
        (dx * dx + dy * dy).sqrt()
    }
}

Self

通常在 Rust 的 trait 和 associated function 中使用 Self 来指代实现该 trait 或调用该 associated function 的类型。

struct Point {
    x: f32,
    y: f32,
}

impl Point {
    //关联函数
    fn origin() -> Self {
        Point { x: 0.0, y: 0.0 }
    }
}

fn main() {
    let p = Point::origin();
}

标签:Point,self,f32,other,fn,Self,rust
From: https://www.cnblogs.com/jye159X/p/17362691.html

相关文章

  • Python很多时候要从键盘连续输入一个数组,并用空格隔开;Python爬取一些数据;python pip安
    Python要从键盘连续输入一个数组,并用空格隔开,Python中的实现方法如下:str=input(‘以空格为间隔连续输入一个数组:’)然后在键盘中输入,会·得到的str为一个字符串,要将其转为一个列表有两种方法方法一:a=[int(n)forninstr_in.split()]方法二:a=list(map(int,str.strip().sp......
  • Rust -- 模式与匹配
    1.模式用来匹配类型中的结构(数据的形状),结合模式和match表达式提供程序控制流的支配权模式组成内容字面量解构的数组、枚举、结构体、元祖变量通配符占位符流程:匹配值-->是否拥有正确的数据-->运行特定的代码2.使用模式的位置match分支:由match关键字、......
  • SelfCAD:免费云端三维建模软件
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生SelfCAD是一款基于云端的三维建模软件,它是一个全功能的CAD软件,具有易于使用的界面和强大的工具,适合初学者和专业设计师使用。以下是SelfCAD的详细介绍:云端软件:SelfCAD是一个基于云端的软件,意味着您无需下载和安装......
  • Rust编程语言入门之最后的项目:多线程 Web 服务器
    最后的项目:多线程Web服务器构建多线程Web服务器在socket上监听TCP连接解析少量的HTTP请求创建一个合适的HTTP响应使用线程池改进服务器的吞吐量优雅的停机和清理注意:并不是最佳实践创建项目~/rust➜cargonewhelloCreatedbinary(application)`......
  • worker-rust
    添加target:wasm32-unknown-unknownrustuptargetaddwasm32-unknown-unknowninfo:downloadingcomponent'rust-std'for'wasm32-unknown-unknown'info:installingcomponent'rust-std'for'wasm32-unknown-unknown'19.0M......
  • rust交叉编译配置:windows上编译linux可执行程序
    rust交叉编译配置:windows上编译linux可执行程序简述交叉编译大概指在在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码.本次,我们配置的是在windows上编译出在linux上运行的rust可执行程序.我们在安装rust之后,默认会安装跟机器环境搭配的编译相关工具.......
  • Rust编程语言入门之高级特性
    高级特性主要内容不安全Rust高级Trait高级类型高级函数和闭包宏一、不安全Rust匹配命名变量隐藏着第二个语言,它没有强制内存安全保证:UnsafeRust(不安全的Rust)和普通的Rust一样,但提供了额外的“超能力”UnsafeRust存在的原因:静态分析是保守的。使用......
  • Rust语言 学习17 模式匹配
    一、模式基本概念二、模式可辩驳性三、模式语法......
  • Rust、Go 和 Swift 在性能和并发性方面有何差异?
    Rust是一种系统编程语言,旨在快速、安全和并发。其性能令人印象深刻,可以生成快速高效的机器代码。Rust 的编译器使用 LLVM 基础架构,它针对目标架构优化了代码。此外,Rust 的所有权和借用系统确保内存得到有效管理,没有任何运行时开销。Rust的并发模型是基于actor模型的,也就是说并......
  • 一个简单的 rust 项目 使用 bevy 引擎 复刻 Flappy Bird 小游戏
    Rust+Bevy实现的FlappyBird游戏简介一个使用bevy引擎复刻的FlappyBird经典小游戏。通过该项目我们可以学到:bevy的自定义组件,自定义插件,自定义资源,sprite的旋转,sprite的移动,spritesheet动画的定义使用,状态管理,等内容…简单介绍一下包含的内容:游戏状态管理Me......