MST
星途 面试题库

面试题:Rust中泛型函数与方法的特性约束

编写一个泛型函数`print_info`,它可以接受任何实现了`Debug` trait的类型,并打印其信息。然后,定义一个结构体`Point`,包含`x`和`y`两个`i32`类型字段,为`Point`结构体实现一个泛型方法`distance`,用于计算该点到原点的距离,该方法接受一个与`Point`类型相同且实现了`Copy` trait的参数。请完整实现上述代码。
25.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::fmt::Debug;

// 泛型函数print_info
fn print_info<T: Debug>(t: &T) {
    println!("{:?}", t);
}

// Point结构体
struct Point {
    x: i32,
    y: i32,
}

// 为Point结构体实现泛型方法distance
impl Point {
    fn distance(&self, other: &impl Copy + Sized + PartialEq<Self> + Into<Point>) -> f64 {
        let other: Point = other.into();
        ((self.x - other.x) as f64).powi(2) + ((self.y - other.y) as f64).powi(2)
            .sqrt()
    }
}

impl Into<Point> for Point {
    fn into(self) -> Point {
        self
    }
}