diff options
| author | nils <48135649+Nilstrieb@users.noreply.github.com> | 2022-10-18 22:13:26 +0200 |
|---|---|---|
| committer | nils <48135649+Nilstrieb@users.noreply.github.com> | 2022-10-19 12:50:28 +0200 |
| commit | d45f025c90c01b9ccea49e2036475ca09e581db1 (patch) | |
| tree | 3b0a188b197c9e44906af0868a3deeb0e4d860f0 | |
| parent | a9d1cafa878ecc04a4aa7aaa7df0414a29a2bd0b (diff) | |
| download | rust-d45f025c90c01b9ccea49e2036475ca09e581db1.tar.gz rust-d45f025c90c01b9ccea49e2036475ca09e581db1.zip | |
Use Set instead of Vec in transitive_relation
| -rw-r--r-- | compiler/rustc_data_structures/src/transitive_relation.rs | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/compiler/rustc_data_structures/src/transitive_relation.rs b/compiler/rustc_data_structures/src/transitive_relation.rs index f016c391fe7..cf616203842 100644 --- a/compiler/rustc_data_structures/src/transitive_relation.rs +++ b/compiler/rustc_data_structures/src/transitive_relation.rs @@ -1,5 +1,5 @@ use crate::frozen::Frozen; -use crate::fx::FxIndexSet; +use crate::fx::{FxHashSet, FxIndexSet}; use rustc_index::bit_set::BitMatrix; use std::fmt::Debug; use std::hash::Hash; @@ -16,7 +16,7 @@ pub struct TransitiveRelationBuilder<T> { // List of base edges in the graph. Require to compute transitive // closure. - edges: Vec<Edge>, + edges: FxHashSet<Edge>, } #[derive(Debug)] @@ -52,10 +52,10 @@ impl<T: Eq + Hash> Default for TransitiveRelationBuilder<T> { } } -#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Debug)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Debug, Hash)] struct Index(usize); -#[derive(Clone, PartialEq, Eq, Debug)] +#[derive(Clone, PartialEq, Eq, Debug, Hash)] struct Edge { source: Index, target: Index, @@ -99,9 +99,7 @@ impl<T: Eq + Hash + Copy> TransitiveRelationBuilder<T> { let a = self.add_index(a); let b = self.add_index(b); let edge = Edge { source: a, target: b }; - if !self.edges.contains(&edge) { - self.edges.push(edge); - } + self.edges.insert(edge); } /// Compute the transitive closure derived from the edges, and converted to |
