pub trait BasicSourceControlGraph: Debug {
type Node: Clone + Debug + Hash + Eq + 'static;
type Error: Debug + Error + 'static;
// Required methods
fn ancestors(
&self,
node: Self::Node,
) -> Result<HashSet<Self::Node>, Self::Error>;
fn descendants(
&self,
node: Self::Node,
) -> Result<HashSet<Self::Node>, Self::Error>;
// Provided methods
fn ancestors_all(
&self,
nodes: HashSet<Self::Node>,
) -> Result<HashSet<Self::Node>, Self::Error> { ... }
fn ancestor_heads(
&self,
nodes: HashSet<Self::Node>,
) -> Result<HashSet<Self::Node>, Self::Error> { ... }
fn descendant_roots(
&self,
nodes: HashSet<Self::Node>,
) -> Result<HashSet<Self::Node>, Self::Error> { ... }
fn descendants_all(
&self,
nodes: HashSet<Self::Node>,
) -> Result<HashSet<Self::Node>, Self::Error> { ... }
}
Expand description
Directed acyclic graph commonly used in source control.
Implementation of Graph
that represents the common case of a directed
acyclic graph in source control. You can implement this trait instead of
Graph
(as there is a blanket implementation for Graph
) and also make use
of BasicStrategy
.
Required Associated Types§
Required Methods§
Provided Methods§
Sourcefn ancestors_all(
&self,
nodes: HashSet<Self::Node>,
) -> Result<HashSet<Self::Node>, Self::Error>
fn ancestors_all( &self, nodes: HashSet<Self::Node>, ) -> Result<HashSet<Self::Node>, Self::Error>
Get the union of ancestors(node)
for every node in nodes
.
Sourcefn ancestor_heads(
&self,
nodes: HashSet<Self::Node>,
) -> Result<HashSet<Self::Node>, Self::Error>
fn ancestor_heads( &self, nodes: HashSet<Self::Node>, ) -> Result<HashSet<Self::Node>, Self::Error>
Filter nodes
to only include nodes that are not ancestors of any other
node in nodes
.