Skip to content

Commit 5662003

Browse files
committed
Intern QuantifiedWhereClauses
Slight performance and memory usage improvement.
1 parent 15b0b55 commit 5662003

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

crates/hir_ty/src/traits/chalk/interner.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ impl_internable!(
5858
InternedWrapper<chalk_ir::ConstData<Interner>>,
5959
InternedWrapper<Vec<chalk_ir::CanonicalVarKind<Interner>>>,
6060
InternedWrapper<Vec<chalk_ir::ProgramClause<Interner>>>,
61+
InternedWrapper<Vec<chalk_ir::QuantifiedWhereClause<Interner>>>,
6162
);
6263

6364
impl chalk_ir::interner::Interner for Interner {
@@ -71,7 +72,7 @@ impl chalk_ir::interner::Interner for Interner {
7172
type InternedSubstitution = Interned<InternedSubstitutionInner>;
7273
type InternedProgramClause = Arc<chalk_ir::ProgramClauseData<Self>>;
7374
type InternedProgramClauses = Interned<InternedWrapper<Vec<chalk_ir::ProgramClause<Self>>>>;
74-
type InternedQuantifiedWhereClauses = Vec<chalk_ir::QuantifiedWhereClause<Self>>;
75+
type InternedQuantifiedWhereClauses = Interned<InternedWrapper<Vec<chalk_ir::QuantifiedWhereClause<Self>>>>;
7576
type InternedVariableKinds = Interned<InternedVariableKindsInner>;
7677
type InternedCanonicalVarKinds = Interned<InternedWrapper<Vec<chalk_ir::CanonicalVarKind<Self>>>>;
7778
type InternedConstraints = Vec<chalk_ir::InEnvironment<chalk_ir::Constraint<Self>>>;
@@ -342,7 +343,7 @@ impl chalk_ir::interner::Interner for Interner {
342343
&self,
343344
data: impl IntoIterator<Item = Result<chalk_ir::QuantifiedWhereClause<Self>, E>>,
344345
) -> Result<Self::InternedQuantifiedWhereClauses, E> {
345-
data.into_iter().collect()
346+
Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
346347
}
347348

348349
fn quantified_where_clauses_data<'a>(

0 commit comments

Comments
 (0)