pub struct ExpressionGraph {
pub nodes: Vec<VariableNode>,
pub edges: Vec<DependencyEdge>,
}Expand description
Expression graph representing variable dependencies within expressions
Fields§
§nodes: Vec<VariableNode>Nodes representing variables only (no operators or constants)
edges: Vec<DependencyEdge>Edges representing dependencies between variables
Implementations§
Source§impl ExpressionGraph
impl ExpressionGraph
Sourcepub fn adjacency(&self, name: &str) -> Vec<String>
pub fn adjacency(&self, name: &str) -> Vec<String>
The UNDIRECTED neighbourhood of name — its predecessors together with
its successors (esm-libraries-spec §4.8.3), sorted. An unknown name
resolves to [].
Sourcepub fn predecessors(&self, name: &str) -> Vec<String>
pub fn predecessors(&self, name: &str) -> Vec<String>
The variables an edge points FROM into name, sorted.
Sourcepub fn successors(&self, name: &str) -> Vec<String>
pub fn successors(&self, name: &str) -> Vec<String>
The variables name points at, sorted.
Sourcepub fn to_dot(&self) -> String
pub fn to_dot(&self) -> String
Export graph to DOT format for Graphviz
§Returns
String- DOT representation of the expression graph
Sourcepub fn to_mermaid(&self) -> String
pub fn to_mermaid(&self) -> String
Sourcepub fn to_json_graph(&self) -> String
pub fn to_json_graph(&self) -> String
Export graph as the JSON adjacency list of esm-libraries-spec §4.8.3.
§Returns
String-{"nodes": […], "edges": […], "adjacency": {…}}
Trait Implementations§
Source§impl Clone for ExpressionGraph
impl Clone for ExpressionGraph
Source§impl Debug for ExpressionGraph
impl Debug for ExpressionGraph
Source§impl<'de> Deserialize<'de> for ExpressionGraph
impl<'de> Deserialize<'de> for ExpressionGraph
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Graph for ExpressionGraph
impl Graph for ExpressionGraph
Source§fn render_dot(&self) -> String
fn render_dot(&self) -> String
This graph rendered as Graphviz DOT.
Source§fn render_mermaid(&self) -> String
fn render_mermaid(&self) -> String
This graph rendered as Mermaid.
Source§fn render_json_graph(&self) -> String
fn render_json_graph(&self) -> String
This graph rendered as a JSON adjacency-list document.
Auto Trait Implementations§
impl Freeze for ExpressionGraph
impl RefUnwindSafe for ExpressionGraph
impl Send for ExpressionGraph
impl Sync for ExpressionGraph
impl Unpin for ExpressionGraph
impl UnsafeUnpin for ExpressionGraph
impl UnwindSafe for ExpressionGraph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.