use retain to avoid the allocation
This commit is contained in:
parent
8a356011ae
commit
0119669711
1 changed files with 7 additions and 7 deletions
|
@ -251,7 +251,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
||||||
var_infos: VarInfos,
|
var_infos: VarInfos,
|
||||||
universal_regions: UniversalRegions<'tcx>,
|
universal_regions: UniversalRegions<'tcx>,
|
||||||
mir: &Mir<'tcx>,
|
mir: &Mir<'tcx>,
|
||||||
outlives_constraints: Vec<OutlivesConstraint>,
|
mut outlives_constraints: Vec<OutlivesConstraint>,
|
||||||
type_tests: Vec<TypeTest<'tcx>>,
|
type_tests: Vec<TypeTest<'tcx>>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
// The `next` field should not yet have been initialized:
|
// The `next` field should not yet have been initialized:
|
||||||
|
@ -268,22 +268,22 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
||||||
.map(|info| RegionDefinition::new(info.origin))
|
.map(|info| RegionDefinition::new(info.origin))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
let mut seen_constraints: FxHashSet<(RegionVid, RegionVid)> = Default::default();
|
||||||
|
|
||||||
|
outlives_constraints.retain(|c| c.sup != c.sub && seen_constraints.insert(c.dedup_key()));
|
||||||
|
|
||||||
let mut result = Self {
|
let mut result = Self {
|
||||||
definitions,
|
definitions,
|
||||||
elements: elements.clone(),
|
elements: elements.clone(),
|
||||||
liveness_constraints: RegionValues::new(elements, num_region_variables),
|
liveness_constraints: RegionValues::new(elements, num_region_variables),
|
||||||
inferred_values: None,
|
inferred_values: None,
|
||||||
dependency_map: None,
|
dependency_map: None,
|
||||||
constraints: Default::default(),
|
constraints: IndexVec::from_raw(outlives_constraints),
|
||||||
seen_constraints: Default::default(),
|
seen_constraints,
|
||||||
type_tests,
|
type_tests,
|
||||||
universal_regions,
|
universal_regions,
|
||||||
};
|
};
|
||||||
|
|
||||||
for c in outlives_constraints {
|
|
||||||
result.add_outlives_iner(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.init_universal_regions();
|
result.init_universal_regions();
|
||||||
|
|
||||||
result
|
result
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue