MST
星途 面试题库

面试题:Rust中结构体方法的访问控制

在Rust中定义一个结构体`Point`,包含两个字段`x`和`y`,都是`i32`类型。接着为这个结构体实现两个方法,一个是公共方法`distance_from_origin`,用于计算该点到原点(0, 0)的距离;另一个是私有方法`scale`,用于将点的坐标按给定的倍数缩放。展示如何正确定义结构体、实现这些方法以及如何调用公共方法。
32.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

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

impl Point {
    pub fn distance_from_origin(&self) -> f64 {
        (self.x.pow(2) + self.y.pow(2)) as f64.sqrt()
    }

    // 私有方法
    fn scale(&mut self, factor: i32) {
        self.x *= factor;
        self.y *= factor;
    }
}

fn main() {
    let mut p = Point { x: 3, y: 4 };
    let dist = p.distance_from_origin();
    println!("Distance from origin: {}", dist);

    // 尝试调用私有方法,这会导致编译错误
    // p.scale(2);
}

上述代码中:

  1. 定义了结构体 Point 包含两个 i32 类型字段 xy
  2. impl 块中为 Point 实现了 distance_from_origin 公共方法用于计算到原点距离。
  3. 实现了私有方法 scale 用于缩放坐标,但在 main 函数中无法直接调用私有方法。
  4. main 函数中创建了 Point 实例并调用了公共方法 distance_from_origin 打印距离。