diff options
| author | pierwill <pierwill@users.noreply.github.com> | 2021-12-07 12:29:13 -0600 |
|---|---|---|
| committer | pierwill <pierwill@users.noreply.github.com> | 2021-12-22 10:50:57 -0600 |
| commit | e6ff0bac1ec1271439ed6a7dd35f861e293cd025 (patch) | |
| tree | a1e830ecf30670c468484cea557b4ed79d12f5f8 /compiler/rustc_data_structures/src/graph/scc/mod.rs | |
| parent | a4a8c241c7bcce3604a0ce130a65084101d0ab47 (diff) | |
| download | rust-e6ff0bac1ec1271439ed6a7dd35f861e293cd025.tar.gz rust-e6ff0bac1ec1271439ed6a7dd35f861e293cd025.zip | |
rustc `VecGraph`: require the index type to implement Ord
Diffstat (limited to 'compiler/rustc_data_structures/src/graph/scc/mod.rs')
| -rw-r--r-- | compiler/rustc_data_structures/src/graph/scc/mod.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/rustc_data_structures/src/graph/scc/mod.rs b/compiler/rustc_data_structures/src/graph/scc/mod.rs index 508a084b311..7099ca7eb88 100644 --- a/compiler/rustc_data_structures/src/graph/scc/mod.rs +++ b/compiler/rustc_data_structures/src/graph/scc/mod.rs @@ -9,6 +9,7 @@ use crate::fx::FxHashSet; use crate::graph::vec_graph::VecGraph; use crate::graph::{DirectedGraph, GraphSuccessors, WithNumEdges, WithNumNodes, WithSuccessors}; use rustc_index::vec::{Idx, IndexVec}; +use std::cmp::Ord; use std::ops::Range; #[cfg(test)] @@ -38,7 +39,7 @@ struct SccData<S: Idx> { all_successors: Vec<S>, } -impl<N: Idx, S: Idx> Sccs<N, S> { +impl<N: Idx, S: Idx + Ord> Sccs<N, S> { pub fn new(graph: &(impl DirectedGraph<Node = N> + WithNumNodes + WithSuccessors)) -> Self { SccsConstruction::construct(graph) } @@ -85,7 +86,7 @@ impl<N: Idx, S: Idx> DirectedGraph for Sccs<N, S> { type Node = S; } -impl<N: Idx, S: Idx> WithNumNodes for Sccs<N, S> { +impl<N: Idx, S: Idx + Ord> WithNumNodes for Sccs<N, S> { fn num_nodes(&self) -> usize { self.num_sccs() } @@ -103,7 +104,7 @@ impl<'graph, N: Idx, S: Idx> GraphSuccessors<'graph> for Sccs<N, S> { type Iter = std::iter::Cloned<std::slice::Iter<'graph, S>>; } -impl<N: Idx, S: Idx> WithSuccessors for Sccs<N, S> { +impl<N: Idx, S: Idx + Ord> WithSuccessors for Sccs<N, S> { fn successors(&self, node: S) -> <Self as GraphSuccessors<'_>>::Iter { self.successors(node).iter().cloned() } |
