在 Rust 中,没有直接的继承关系,而是使用组合和泛型来实现类似继承的功能。要实现类似继承的功能,你可以使用以下方法:
struct Parent {
value: i32,
}
impl Parent {
fn get_value(&self) -> i32 {
self.value
}
}
struct Child {
parent: Parent,
}
impl Child {
fn new(parent: Parent) -> Self {
Child { parent }
}
}
fn main() {
let parent = Parent { value: 42 };
let child = Child::new(parent);
println!("Parent value: {}", parent.get_value());
println!("Child parent value: {}", child.parent.get_value());
}
Box<dyn Trait>
来创建一个特征对象。trait Animal {
fn speak(&self);
}
struct Dog;
impl Animal for Dog {
fn speak(&self) {
println!("Woof!");
}
}
struct Cat;
impl Animal for Cat {
fn speak(&self) {
println!("Meow!");
}
}
fn make_animal_speak<T: Animal>(animal: &T) {
animal.speak();
}
fn main() {
let dog = Dog;
let cat = Cat;
make_animal_speak(&dog); // 输出 "Woof!"
make_animal_speak(&cat); // 输出 "Meow!"
}
在这个例子中,Dog
和 Cat
结构体都实现了 Animal
特征,因此它们都可以作为泛型参数传递给 make_animal_speak
函数。这就是 Rust 中实现类似继承功能的方法。