Skip to main content

NodeType

Enum NodeType 

Source
pub enum NodeType {
    Input,
    Output,
    Vertex,
    Edge,
    Leaf,
    Root,
}
Expand description

NodeType is a soft identification for different nodes within a graph or tree structure.

Most of the time when reading a node’s type, we can determine what kind of node it is by the connections around it. For example, in a graph, if a node has 0 incoming connections, it is likely an Input. Inversely, if a node has 0 outgoing connections, it is likely an Output. For a tree, we can tell if it is a leaf or a vertex based on it’s nunmber of children. However, when building either a graph or tree, we usually want to specify which type of node we want to create. Thus, we typically use this enum more for writing (building nodes) rather than reading (traversing nodes).

See the GraphNode and TreeNode implementations for more details or rules around how this is handled.

Because of this, the NodeType enum is a soft identification, and should be used as a hint rather than a strict rule. The node_type method in the Node trait has guards around it within the GraphNode and TreeNode implementations which handle this ambiguity and provide a more accurate node type when traversing the graph or tree. All that being said, it is a very very rare case where the node_type method would return a different value than what is specified in the NodeType enum - the only way this is possible is if the NodeType isn’t supplied to the node during creation.

Within each node (GraphNode or TreeNode), the NodeType is used to determine the validity of the node given the value it holds.

Variants§

§

Input

Input types are only used within graph structrues and are the starting point for data flow within the graph.

§

Output

Output types are only used within graph structrues and are the endpoint for data flow within the graph.

§

Vertex

Vertex types are used within both graph and tree structures to represent nodes that must have incoming (or parent) connections and outgoing connections (or children). This is a general purpose node type and is likely the type you think of when thinking of a generic node.

§

Edge

Edge types are only used within graph structures and represent nodes that have a single incoming connection and n outgoing connections. This is how we represent weights or other single-input nodes within a graph.

§

Leaf

Leaf types are used within tree structures to represent nodes that have no children. They are the endpoint (or output) of the tree structure. We use Leaf instead of output to avoid confusion and keep terminology consistent.

§

Root

Root types are used within tree structures to represent the starting point of the tree. They are the first node in the tree structure and must have 0 parents.

Trait Implementations§

Source§

impl Clone for NodeType

Source§

fn clone(&self) -> NodeType

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for NodeType

Source§

impl Debug for NodeType

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Eq for NodeType

Source§

impl<T: Clone + Default> Factory<NodeType, Option<TreeNode<T>>> for NodeStore<T>

Source§

fn new_instance(&self, input: NodeType) -> Option<TreeNode<T>>

Source§

impl<T> Factory<NodeType, T> for NodeStore<T>
where T: Factory<(), T> + Default,

Source§

fn new_instance(&self, input: NodeType) -> T

Source§

impl Hash for NodeType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for NodeType

Source§

fn cmp(&self, other: &NodeType) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for NodeType

Source§

fn eq(&self, other: &NodeType) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialOrd for NodeType

Source§

fn partial_cmp(&self, other: &NodeType) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for NodeType

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.