在Rust 1.3中继承结构的最佳方法是什么?

bit*_*ick 21 inheritance struct rust

当我使用Rust 1.3编译它时,编译器告诉我virtual结构已从语言中删除:

struct Foo: Bar {

}
Run Code Online (Sandbox Code Playgroud)

bea*_*mit 13

简短的回答,你不能用结构继承.

Rust使用组合而不是继承.但是,您可以特征中进行继承.Traits没有数据,但是它们可以定义函数,因此通过使用它们可以获得继承的许多好处:

trait Foo {
    fn foo(&self);
}

trait FooBar: Foo {
    fn foobar(&self);
}
Run Code Online (Sandbox Code Playgroud)

的实现者FooBar 必须实现foo(除非你提供一个默认的实现).

Rust专业化的一种方式通常是通过enums,这在Rust中非常强大.Rust的一位开发人员写了一篇关于Rust如何解决这些类型问题的好博客系列.我建议通读它以及阅读官方书籍.