TreeBuilder

Struct TreeBuilder 

Source
pub struct TreeBuilder<T> { /* private fields */ }
Expand description

Builder for constructing tree structures from flat data

Provides methods to build a hierarchical tree from flat lists of items with path-based insertion.

Implementations§

Source§

impl<T> TreeBuilder<T>

Source

pub fn new(root_name: impl Into<String>) -> Self

Create a new tree builder with a root node name

§Examples
use tree_fmt::TreeBuilder;

let builder : TreeBuilder< i32 > = TreeBuilder::new( "root" );
Source

pub fn insert(self, path: &[&str], data: T) -> Self

Insert an item at the specified path

§Arguments
  • path - Array of path components (e.g., &["src", "main.rs"])
  • data - Data to associate with the leaf node
§Examples
use tree_fmt::TreeBuilder;

let tree = TreeBuilder::new( "root" )
  .insert( &[ "src", "main.rs" ], 100 )
  .insert( &[ "src", "lib.rs" ], 200 )
  .build();
Source

pub fn build(self) -> TreeNode<T>

Build the final tree

Consumes the builder and returns the root node.

Source§

impl<T: Clone> TreeBuilder<T>

Source

pub fn from_items<F, G>( items: &[T], extract_path: F, extract_data: G, ) -> TreeNode<T>
where F: Fn(&T) -> Vec<String>, G: Fn(&T) -> T,

Build tree from items with path extractor and data extractor

§Arguments
  • items - Slice of items to build tree from
  • extract_path - Function to extract path components from an item
  • extract_data - Function to extract data from an item
§Examples
use tree_fmt::TreeBuilder;

#[ derive( Clone ) ]
struct FileItem { path : String, size : u64 }

let items = vec![
  FileItem { path : "src/main.rs".to_string(), size : 100 },
  FileItem { path : "src/lib.rs".to_string(), size : 200 },
];

let tree = TreeBuilder::from_items( &items, | item | {
  item.path.split( '/' ).map( | s | s.to_string() ).collect()
}, | item | item.clone() );

Trait Implementations§

Source§

impl<T: Debug> Debug for TreeBuilder<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for TreeBuilder<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for TreeBuilder<T>
where T: RefUnwindSafe,

§

impl<T> Send for TreeBuilder<T>
where T: Send,

§

impl<T> Sync for TreeBuilder<T>
where T: Sync,

§

impl<T> Unpin for TreeBuilder<T>
where T: Unpin,

§

impl<T> UnwindSafe for TreeBuilder<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.