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 используется напрямую);
- у каждого узла ровно один родитель;
- идентификаторы стабильны между кадрами (для выделения/развёртки).