MST
星途 面试题库

面试题:Rust常函数的基本特性

请阐述Rust常函数的主要特性有哪些?并举例说明在结构体方法中,常函数如何确保不会修改结构体的状态。
28.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

Rust常函数的主要特性

  1. 不改变调用者状态:常函数不能修改调用它的实例的任何字段,这确保了数据的不可变性,有助于编写更安全、可预测的代码。
  2. 可用于不可变引用:常函数可以被具有不可变引用的实例调用。这对于只读操作非常有用,例如查询数据或执行计算,而不会改变对象的状态。

结构体方法中常函数确保不修改结构体状态的示例

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

impl Point {
    // 常函数示例
    fn distance_from_origin(&self) -> f64 {
        ((self.x.pow(2) + self.y.pow(2)) as f64).sqrt()
    }
}

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

在上述代码中,distance_from_originPoint 结构体的常函数。&self 表示该函数接受 Point 实例的不可变引用。函数体中只是读取 xy 字段进行计算,而不会修改它们,从而确保不会改变结构体的状态。