«Наследование» в Rust: супертрейты
// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0
pub trait SuperTrait {}
pub trait Trait: SuperTrait {}
-
В Rust трейты могут зависеть от других трейтов. Мы уже знакомы с тем, что у трейтов могут быть супертрейты.
-
Внешне это похоже на наследование.
-
Это механизм, похожий на наследование, но он отделяет данные от поведения.
-
Поведение остаётся в таком состоянии, в котором его легко анализировать.
-
Также это упрощает то, чего мы хотим добиться с помощью «множественного наследования»:
Нас интересует, какое поведение способен проявить тип, только в тот момент, когда мы явно указываем, что хотим этого поведения (при ограничении обобщённого параметра трейтами).
Указав несколько трейтов для обобщённого параметра, мы знаем, что у типа есть методы всех этих трейтов.
-
Наследования полей не происходит. Трейт не открывает поля, только методы, ассоциированные типы и константы.