MST

星途 面试题库

面试题:Rust关联函数与trait方法在泛型中的运用

假设有一个泛型结构体`Point<T>`,包含`x`和`y`两个字段。请定义一个关联函数,它可以根据传入的不同类型`T`,返回一个默认值的`Point<T>`。同时,定义一个trait `Drawable`,其中有一个方法`draw`用于描述`Point<T>`如何绘制自身,要求在实现`Drawable` trait时能够处理不同类型`T`的情况。写出完整的代码示例。
31.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义泛型结构体Point
struct Point<T> {
    x: T,
    y: T,
}

// 为Point<T>定义关联函数,返回默认值的Point<T>
impl<T> Point<T> {
    fn default_point() -> Point<T>
    where
        T: Default,
    {
        Point {
            x: T::default(),
            y: T::default(),
        }
    }
}

// 定义Drawable trait
trait Drawable {
    fn draw(&self);
}

// 为Point<T>实现Drawable trait
impl<T: std::fmt::Debug> Drawable for Point<T> {
    fn draw(&self) {
        println!("Point: ({:?}, {:?})", self.x, self.y);
    }
}

fn main() {
    let default_i32 = Point::<i32>::default_point();
    default_i32.draw();

    let default_f64 = Point::<f64>::default_point();
    default_f64.draw();
}