Skip to main content

Tree

Trait Tree 

Source
pub trait Tree:
    Leaves
    + Clone
    + 'static {
    // Required method
    fn visit_mut(&mut self, v: &mut VisitMut<'_>);

    // Provided methods
    fn for_each(&self, f: impl FnMut(&str, &Array)) { ... }
    fn map(&self, f: impl FnMut(&str, &Array) -> Array) -> Self { ... }
    fn leaves(&self) -> Vec<Array> { ... }
    fn paths(&self) -> Vec<String> { ... }
    fn flatten(&self) -> Vec<(String, Array)> { ... }
    fn unflatten(&self, leaves: impl IntoIterator<Item = Array>) -> Result<Self> { ... }
    fn load_flat(
        &mut self,
        named: impl IntoIterator<Item = (String, Array)>,
        mode: LoadMode,
    ) -> Result<()> { ... }
    fn len(&self) -> usize { ... }
    fn is_empty(&self) -> bool { ... }
    fn def(&self) -> TreeDef { ... }
}
Expand description

An owned tree of arrays: rebuilt with new leaves of the same structure, mutated in place.

Implemented for Array, Param, (), Option<T>, Box<T>, Vec<T>, [T; N], tuples up to 8 elements, BTreeMap<String, T> and HashMap<String, T> (visited in sorted key order), and user types with #[derive(Tree)].

Required Methods§

Source

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Reports every leaf (and child tree and mode flag) to v mutably, in the order of Leaves::visit.

Provided Methods§

Source

fn for_each(&self, f: impl FnMut(&str, &Array))

Calls f(path, leaf) for every leaf, in order.

Source

fn map(&self, f: impl FnMut(&str, &Array) -> Array) -> Self

The tree with every leaf replaced by f(path, leaf) (same structure; parameters keep their frozen flag).

Source

fn leaves(&self) -> Vec<Array>

The leaves, in order.

Source

fn paths(&self) -> Vec<String>

The leaves’ paths, in order.

Source

fn flatten(&self) -> Vec<(String, Array)>

The leaves with their paths, in order (MLX’s tree_flatten).

Source

fn unflatten(&self, leaves: impl IntoIterator<Item = Array>) -> Result<Self>

A tree of this structure (self is the template) with leaves in order: exactly Tree::len of them, else an error naming both counts.

Source

fn load_flat( &mut self, named: impl IntoIterator<Item = (String, Array)>, mode: LoadMode, ) -> Result<()>

Replaces leaves by path. LoadMode::Strict requires exactly the tree’s paths with matching shapes; LoadMode::Partial assigns the matching names and ignores unknown ones (shapes must still match). Loaded dtypes are kept. On any problem the error lists every one (missing, unknown and mismatched names, sorted) and the tree is unchanged. Duplicate paths (in the tree or in named) are an error.

Source

fn len(&self) -> usize

The number of leaves.

Source

fn is_empty(&self) -> bool

Whether the tree has no leaves.

Source

fn def(&self) -> TreeDef

The tree’s structure.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Tree for ()

Source§

fn visit_mut(&mut self, _: &mut VisitMut<'_>)

Source§

impl<A: Tree, B: Tree, C: Tree, D: Tree, E: Tree, F: Tree, G: Tree, H: Tree> Tree for (A, B, C, D, E, F, G, H)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<A: Tree, B: Tree, C: Tree, D: Tree, E: Tree, F: Tree, G: Tree> Tree for (A, B, C, D, E, F, G)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<A: Tree, B: Tree, C: Tree, D: Tree, E: Tree, F: Tree> Tree for (A, B, C, D, E, F)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<A: Tree, B: Tree, C: Tree, D: Tree, E: Tree> Tree for (A, B, C, D, E)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<A: Tree, B: Tree, C: Tree, D: Tree> Tree for (A, B, C, D)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<A: Tree, B: Tree, C: Tree> Tree for (A, B, C)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<A: Tree, B: Tree> Tree for (A, B)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<A: Tree> Tree for (A,)

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<T: ?Sized + 'static> Tree for PhantomData<T>

Source§

fn visit_mut(&mut self, _: &mut VisitMut<'_>)

Source§

impl<T: Tree, S: BuildHasher + Clone + 'static> Tree for HashMap<String, T, S>

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<T: Tree, const N: usize> Tree for [T; N]

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<T: Tree> Tree for BTreeMap<String, T>

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<T: Tree> Tree for Box<T>

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<T: Tree> Tree for Option<T>

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Source§

impl<T: Tree> Tree for Vec<T>

Source§

fn visit_mut(&mut self, v: &mut VisitMut<'_>)

Implementors§