Skip to main content

NirGraph

Struct NirGraph 

Source
pub struct NirGraph {
    pub nodes: IndexMap<String, NirNode>,
    pub edges: Vec<(String, String)>,
    pub metadata: HashMap<String, MetadataValue>,
    pub version: Option<String>,
}
Expand description

Directed NIR computation graph.

Node insertion order is preserved via IndexMap (stable iteration for serialization and debugging). Edges are an ordered list of (src, dst) name pairs.

Fields§

§nodes: IndexMap<String, NirNode>

Named computational nodes (insertion-ordered).

§edges: Vec<(String, String)>

Directed edges as (source_name, destination_name).

§metadata: HashMap<String, MetadataValue>

Free-form graph metadata.

§version: Option<String>

Optional NIR version string (set when loading from HDF5 in v0.3).

Implementations§

Source§

impl NirGraph

Source

pub fn new() -> Self

Create an empty graph.

Source

pub fn insert_node( &mut self, name: impl Into<String>, node: NirNode, ) -> Result<()>

Insert a node under name.

§Errors

Returns NirError::DuplicateNode if name is already present.

Source

pub fn add_edge(&mut self, from: impl Into<String>, to: impl Into<String>)

Append a directed edge (from → to) without validating endpoints.

Call validate_structure to check that endpoints exist and that the edge is not duplicated.

Source

pub fn get(&self, name: &str) -> Option<&NirNode>

Borrow the node named name, if present.

Source

pub fn get_mut(&mut self, name: &str) -> Option<&mut NirNode>

Mutably borrow the node named name, if present.

Source

pub fn len(&self) -> usize

Number of nodes.

Source

pub fn is_empty(&self) -> bool

Whether the graph has no nodes.

Source

pub fn validate_structure(&self) -> Result<()>

Validate structural integrity.

Checks:

  • every edge endpoint names an existing node
  • no duplicate directed edges (src, dst)
  • nested NirNode::Graph subgraphs also validate

Cycles are allowed. Type/shape inference is out of scope for v0.2.

§Errors

Trait Implementations§

Source§

impl Clone for NirGraph

Source§

fn clone(&self) -> NirGraph

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 Debug for NirGraph

Source§

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

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

impl Default for NirGraph

Source§

fn default() -> NirGraph

Returns the “default value” for a type. Read more
Source§

impl PartialEq for NirGraph

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for NirGraph

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<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> 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 = 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.