pub struct DependencyGraph { /* private fields */ }Expand description
Dependency graph for tracking type dependencies
Implementations§
Source§impl DependencyGraph
impl DependencyGraph
pub fn new() -> Self
Sourcepub fn add_dependency(&mut self, from: TypeNode, to: TypeNode)
pub fn add_dependency(&mut self, from: TypeNode, to: TypeNode)
Add a dependency edge: from depends on to
Sourcepub fn dependencies_of(&self, node: &TypeNode) -> Option<&HashSet<TypeNode>>
pub fn dependencies_of(&self, node: &TypeNode) -> Option<&HashSet<TypeNode>>
Get all direct dependencies of a node
Sourcepub fn dependents_of(&self, node: &TypeNode) -> Option<&HashSet<TypeNode>>
pub fn dependents_of(&self, node: &TypeNode) -> Option<&HashSet<TypeNode>>
Get all nodes that depend on the given node
Sourcepub fn topological_sort(&self) -> Result<Vec<TypeNode>, CycleError>
pub fn topological_sort(&self) -> Result<Vec<TypeNode>, CycleError>
Perform topological sort on the graph Returns nodes in dependency order (dependencies come before dependents)
Sourcepub fn transitive_dependencies(&self, node: &TypeNode) -> HashSet<TypeNode>
pub fn transitive_dependencies(&self, node: &TypeNode) -> HashSet<TypeNode>
Get all transitive dependencies of a node
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DependencyGraph
impl RefUnwindSafe for DependencyGraph
impl Send for DependencyGraph
impl Sync for DependencyGraph
impl Unpin for DependencyGraph
impl UnwindSafe for DependencyGraph
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