pub trait IntoIterGlobalNodes: Sized + Copy {
type Iter: Iterator<Item = NodeIndex<u32>>;
// Required methods
fn iter_nodes(self) -> Self::Iter;
fn controller_id(self) -> DefId;
// Provided methods
fn iter_global_nodes(self) -> GlobalNodeIter<Self> { ... }
fn extended(self, other: impl IntoIterGlobalNodes) -> Option<NodeCluster> { ... }
fn to_local_cluster(self) -> NodeCluster { ... }
}
Expand description
This lets us be agnostic whether a primitive (such as flows_to
) is called
with a GlobalNode
or &NodeCluster
.
Note that while GlobalNode
implements this trait NodeCluster
does
not do so directly, but it’s reference &NodeCluster
does.
Required Associated Types§
Required Methods§
sourcefn iter_nodes(self) -> Self::Iter
fn iter_nodes(self) -> Self::Iter
iterate over the local nodes
sourcefn controller_id(self) -> DefId
fn controller_id(self) -> DefId
The controller id all of these nodes are located in.
Provided Methods§
sourcefn iter_global_nodes(self) -> GlobalNodeIter<Self>
fn iter_global_nodes(self) -> GlobalNodeIter<Self>
Iterate all nodes as globally identified one’s.
The invariant of this iterator is that all controller_id()
s of the
nodes in the iterator is the same as self.controller_id()
.
sourcefn extended(self, other: impl IntoIterGlobalNodes) -> Option<NodeCluster>
fn extended(self, other: impl IntoIterGlobalNodes) -> Option<NodeCluster>
A convenience method for gathering multiple node(cluster)s together.
Returns None
if the controller id’s don’t match or both iterators are empty.
sourcefn to_local_cluster(self) -> NodeCluster
fn to_local_cluster(self) -> NodeCluster
Collect the iterator into a cluster