pub trait IntoIterGlobalNodes: Sized + Copy {
type Iter: Iterator<Item = NodeIndex>;
// 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§
Sourcetype Iter: Iterator<Item = NodeIndex>
type Iter: Iterator<Item = NodeIndex>
The iterator returned by Self::iter_nodes
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
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.