TreeModel

Trait TreeModel 

Source
pub trait TreeModel {
    type Id: Copy + Eq + Hash;

    // Required methods
    fn root(&self) -> Option<Self::Id>;
    fn children(&self, id: Self::Id) -> &[Self::Id];
    fn contains(&self, id: Self::Id) -> bool;

    // Provided method
    fn size_hint(&self) -> usize { ... }
}
Expand description

Минимальный контракт дерева для виджета.

Ожидается настоящее дерево (не DAG):

  • без циклов (обход DFS используется напрямую);
  • у каждого узла ровно один родитель;
  • идентификаторы стабильны между кадрами (для выделения/развёртки).

Required Associated Types§

Source

type Id: Copy + Eq + Hash

Required Methods§

Source

fn root(&self) -> Option<Self::Id>

Корневой узел дерева (или None, если дерево пустое).

Source

fn children(&self, id: Self::Id) -> &[Self::Id]

Дети узла в детерминированном порядке.

Source

fn contains(&self, id: Self::Id) -> bool

Проверка существования узла в модели.

Provided Methods§

Source

fn size_hint(&self) -> usize

Примерная оценка размера (не обязательно точная).

Implementors§