Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

«Наследование» в Rust: супертрейты

// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0

pub trait SuperTrait {}

pub trait Trait: SuperTrait {}
  • В Rust трейты могут зависеть от других трейтов. Мы уже знакомы с тем, что у трейтов могут быть супертрейты.

  • Внешне это похоже на наследование.

  • Это механизм, похожий на наследование, но он отделяет данные от поведения.

  • Поведение остаётся в таком состоянии, в котором его легко анализировать.

  • Также это упрощает то, чего мы хотим добиться с помощью «множественного наследования»:

    Нас интересует, какое поведение способен проявить тип, только в тот момент, когда мы явно указываем, что хотим этого поведения (при ограничении обобщённого параметра трейтами).

    Указав несколько трейтов для обобщённого параметра, мы знаем, что у типа есть методы всех этих трейтов.

  • Наследования полей не происходит. Трейт не открывает поля, только методы, ассоциированные типы и константы.