Struct id_tree::TreeBuilder[][src]

pub struct TreeBuilder<T> { /* fields omitted */ }

A Tree builder that provides more control over how a Tree is created.

Implementations

impl<T> TreeBuilder<T>[src]

pub fn new() -> TreeBuilder<T>[src]

Creates a new TreeBuilder with the default settings.

use id_tree::TreeBuilder;

let _tree_builder: TreeBuilder<i32> = TreeBuilder::new();

pub fn with_root(self, root: Node<T>) -> TreeBuilder<T>[src]

Sets the root Node of the TreeBuilder.

use id_tree::TreeBuilder;
use id_tree::Node;

let _tree_builder = TreeBuilder::new().with_root(Node::new(1));

pub fn with_node_capacity(self, node_capacity: usize) -> TreeBuilder<T>[src]

Sets the node_capacity of the TreeBuilder.

Since Trees own their Nodes, they must allocate storage space as Nodes are inserted. Using this setting allows the Tree to pre-allocate space for Nodes ahead of time, so that the space allocations don’t happen as the Nodes are inserted.

Use of this setting is recommended if you know the maximum number of Nodes that your Tree will contain at any given time.

use id_tree::TreeBuilder;

let _tree_builder: TreeBuilder<i32> = TreeBuilder::new().with_node_capacity(3);

pub fn with_swap_capacity(self, swap_capacity: usize) -> TreeBuilder<T>[src]

Sets the swap_capacity of the TreeBuilder.

This is important because Trees attempt to save time by re-using storage space when Nodes are removed (instead of shuffling Nodes around internally). To do this, the Tree must store information about the space left behind when a Node is removed. Using this setting allows the Tree to pre-allocate this storage space instead of doing so as Nodes are removed from the Tree.

Use of this setting is recommended if you know the maximum “net number of removals” that have occurred at any given time.

For example:

In Scenario 1:

  • Add 3 Nodes, Remove 2 Nodes, Add 1 Node.

The most amount of nodes that have been removed at any given time is 2.

But in Scenario 2:

  • Add 3 Nodes, Remove 2 Nodes, Add 1 Node, Remove 2 Nodes.

The most amount of nodes that have been removed at any given time is 3.

use id_tree::TreeBuilder;

let _tree_builder: TreeBuilder<i32> = TreeBuilder::new().with_swap_capacity(3);

pub fn build(self) -> Tree<T>[src]

Build a Tree based upon the current settings in the TreeBuilder.

use id_tree::TreeBuilder;
use id_tree::Tree;
use id_tree::Node;

let _tree: Tree<i32> = TreeBuilder::new()
        .with_root(Node::new(5))
        .with_node_capacity(3)
        .with_swap_capacity(2)
        .build();

Auto Trait Implementations

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.