// 定义 Drawable 特征
trait Drawable {
fn draw(&self);
}
// Circle 结构体实现 Drawable 特征
struct Circle {
radius: f64,
}
impl Drawable for Circle {
fn draw(&self) {
println!("Drawing a circle with radius {}", self.radius);
}
}
// Rectangle 结构体实现 Drawable 特征
struct Rectangle {
width: f64,
height: f64,
}
impl Drawable for Rectangle {
fn draw(&self) {
println!("Drawing a rectangle with width {} and height {}", self.width, self.height);
}
}
fn main() {
// 创建 Circle 和 Rectangle 的实例
let circle = Circle { radius: 5.0 };
let rectangle = Rectangle { width: 10.0, height: 5.0 };
// 创建一个 Vec<&dyn Drawable> 并放入 Circle 和 Rectangle 的实例
let mut drawables: Vec<&dyn Drawable> = Vec::new();
drawables.push(&circle);
drawables.push(&rectangle);
// 遍历 Vec 并调用 draw 方法
for drawable in drawables {
drawable.draw();
}
}