MST

星途 面试题库

面试题:Rust中特征多重实现的基础场景

假设你有两个结构体`Point2D`和`Rectangle`,以及一个特征`Drawable`用于定义绘制方法。请举例说明如何在`Point2D`和`Rectangle`上分别实现`Drawable`特征。同时,如果之后又有一个新的结构体`Circle`,也想实现`Drawable`特征,简述实现步骤。
23.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

以下以Rust语言为例进行实现:

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

// 定义Point2D结构体
struct Point2D {
    x: i32,
    y: i32,
}

// 在Point2D上实现Drawable特征
impl Drawable for Point2D {
    fn draw(&self) {
        println!("Drawing Point2D at ({}, {})", self.x, self.y);
    }
}

// 定义Rectangle结构体
struct Rectangle {
    x: i32,
    y: i32,
    width: i32,
    height: i32,
}

// 在Rectangle上实现Drawable特征
impl Drawable for Rectangle {
    fn draw(&self) {
        println!("Drawing Rectangle at ({}, {}) with width {} and height {}", self.x, self.y, self.width, self.height);
    }
}

// 定义Circle结构体
struct Circle {
    x: i32,
    y: i32,
    radius: i32,
}

// 在Circle上实现Drawable特征
impl Drawable for Circle {
    fn draw(&self) {
        println!("Drawing Circle at ({}, {}) with radius {}", self.x, self.y, self.radius);
    }
}

对于新的Circle结构体实现Drawable特征步骤如下:

  1. 定义Circle结构体,包含其需要的字段(如圆心坐标xy和半径radius)。
  2. 使用impl Drawable for Circle语法为Circle实现Drawable特征。
  3. 在实现块内,定义draw方法,编写具体的绘制逻辑。