MST

星途 面试题库

面试题:Rust中impl块的基本组织及方法实现

假设有一个Rust结构体`Point`,包含两个字段`x: i32`和`y: i32`。请在`impl`块中实现一个方法`distance`,用于计算该点到原点`(0, 0)`的欧几里得距离。说明`impl`块的组织原则,包括如何定义关联函数和实例方法。
15.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
struct Point {
    x: i32,
    y: i32,
}

impl Point {
    // 实例方法
    fn distance(&self) -> f64 {
        (self.x.pow(2) + self.y.pow(2)) as f64).sqrt()
    }

    // 关联函数
    fn new(x: i32, y: i32) -> Point {
        Point { x, y }
    }
}

impl块组织原则

  1. 实例方法
    • 实例方法第一个参数总是&self(可变引用&mut self用于修改实例),表示方法调用的对象实例。在distance方法中,&self允许我们访问结构体Point的字段xy来进行距离计算。
  2. 关联函数
    • 关联函数不以self作为参数,它们通常用于创建实例(如new函数)或执行与结构体相关但不依赖于特定实例的操作。调用关联函数使用结构体名::函数名的形式,例如let p = Point::new(3, 4);