2015-09-23 16 views
13
struct Foo: Bar { 

} 

Khi tôi biên dịch, trình biên dịch cho tôi biết rằng cấu trúc virtual đã bị xóa khỏi ngôn ngữ.Cách tốt nhất để kế thừa cấu trúc trong Rust 1.3 là gì?

Tại thời điểm đăng câu hỏi này, Rust 1.3 là phiên bản ổn định hiện tại.

+1

http://aturon.github.io/blog/2015/09/18/reuse/ có một vài ví dụ làm việc từ Servo nếu bạn thực sự cần thừa kế. – ArtemGr

Trả lời

7

Câu trả lời ngắn gọn, bạn không thể thực hiện kế thừa với cấu trúc.

Thay vì kế thừa, Rust sử dụng bố cục. Tuy nhiên, bạn có thể làm thừa kế trong phạm vi traits. Đặc điểm không có dữ liệu, nhưng họ có thể xác định chức năng, vì vậy bạn có thể nhận được khá nhiều những lợi ích của thừa kế:

trait Foo { 
    fn foo(&self); 
} 

trait FooBar: Foo { 
    fn foobar(&self); 
} 

Một implementor của FooBarphải thực hiện foo (trừ khi bạn cung cấp một cài đặt mặc định) .

Một cách Rust chuyên môn hóa thường là thông qua enums, rất mạnh mẽ trong Rust. Một trong những nhà phát triển Rust đã viết a good blog series about how Rust approaches these types of problems. Tôi khuyên bạn nên đọc qua nó cũng như đọc qua cuốn sách chính thức (liên kết trước đó).

Các vấn đề liên quan