我是C++背景的新手。我写了下面的代码来理解代码的可重用性,这是继承背后的唯一目的。
/* in animal.rs */
//declare Animal here
pub struct Animal;
// implement Animal here
impl Animal
{
pub fn breathe(&self)
{
println!("All animals breathe!");
}
}
// declare Dog here
pub struct Dog
{
pub parent: Animal
}
// implement Dog here
impl Dog
{
pub fn bark(&self)
{
println!("Dogs bark!");
}
pub fn breathe(&self)
{
self.parent.breathe();
}
}
/* in main.rs */
mod animal;
fn main()
{
let d = animal::Dog {parent : animal::Animal};
d.bark();
d.breathe();
}
如果我不在Dog
中实现breathe
函数,编译器就找不到它。在C中,子函数继承其父函数。有人能解释一下吗?
补充问题:有人能展示一些示例代码吗?动态/后期绑定是如何在rust
中工作的。在C中,它是通过virtual
函数实现的。
1条答案
按热度按时间bvjxkvbb1#
Rust中没有结构继承,但是你可以像下面的例子一样使用trait来定义一个共享行为,你可以看到
dyn AnimalTrait
关键字,它在Rust中用于动态调度。