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ą.
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ą.
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 FooBar
musi 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).
http://aturon.github.io/blog/2015/09/18/reuse/ ma kilka przykładów pracy z Servo, jeśli naprawdę potrzebujesz dziedziczenia. – ArtemGr