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

} 

Kiedy kompiluję to, kompilator mówi mi, że z języka usunięto konstrukcje.Jaki jest najlepszy sposób dziedziczenia struct w Rust 1.3?

W momencie zamieszczania tego pytania, Rust 1.3 jest aktualną wersją stabilną.

+1

http://aturon.github.io/blog/2015/09/18/reuse/ ma kilka przykładów pracy z Servo, jeśli naprawdę potrzebujesz dziedziczenia. – ArtemGr

Odpowiedz

7

Krótka odpowiedź, nie można robić dziedziczenia za pomocą struktur.

Zamiast dziedziczenia Rust używa kompozycji. Jednakże, może dziedziczyć w ramach traits. Cechy nie posiada danych, ale mogą definiować funkcje, dzięki czemu można uzyskać sporo zalet dziedziczenia:

trait Foo { 
    fn foo(&self); 
} 

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

implementor z FooBarmusi wdrożenia foo (chyba, że ​​zapewniają realizację domyślny) .

Jednym ze sposobów Rust robi specjalizację jest zazwyczaj poprzez enums, które są bardzo silne w Rust. Jeden z programistów Rust napisał a good blog series about how Rust approaches these types of problems. Polecam lekturę i przeczytanie oficjalnej książki (link wcześniej).

Powiązane problemy