Подтвердить что ты не робот

Каков наилучший способ наследования структуры в Rust 1.3?

struct Foo: Bar {

}

Когда я скомпилирую это, компилятор сообщает мне, что virtual structs были удалены с языка.

Во время публикации этого вопроса Rust 1.3 является текущей стабильной версией.

4b9b3361

Ответ 1

Короткий ответ, вы не можете наследовать с помощью структур.

Вместо наследования Rust использует состав. Однако вы можете сделать наследование в traits. У черт нет данных, но они могут определять функции, поэтому вы можете получить довольно много преимуществ наследования:

trait Foo {
    fn foo(&self);
}

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

Разработчик FooBar должен реализовать foo (если только вы не предоставили реализацию по умолчанию).

Один из способов Rust делает специализацию, как правило, через enums, которые очень сильны в Rust. Один из разработчиков Rust написал хорошую серию блога о том, как Rust подходит к этим типам проблем. Я рекомендую прочитать его, а также прочитать официальную книгу (ранее связанную).