aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/traits
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2021-04-08 19:06:19 +0100
committerFlorian Diebold <[email protected]>2021-04-08 21:48:47 +0100
commit317c4b972f5f8da9b5007b8a441a5a79a60a4cd5 (patch)
tree2c8fac56ec4a64a5d2d19308b3184041cf0bbe24 /crates/hir_ty/src/traits
parent90656f86745afe073a5b590d51b22ec5f6b60e1b (diff)
Intern CanonicalVarKinds
Slight savings in performance and memory.
Diffstat (limited to 'crates/hir_ty/src/traits')
-rw-r--r--crates/hir_ty/src/traits/chalk/interner.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/crates/hir_ty/src/traits/chalk/interner.rs b/crates/hir_ty/src/traits/chalk/interner.rs
index 3a6ceef05..d63252382 100644
--- a/crates/hir_ty/src/traits/chalk/interner.rs
+++ b/crates/hir_ty/src/traits/chalk/interner.rs
@@ -56,6 +56,7 @@ impl_internable!(
56 InternedTypeInner, 56 InternedTypeInner,
57 InternedWrapper<chalk_ir::LifetimeData<Interner>>, 57 InternedWrapper<chalk_ir::LifetimeData<Interner>>,
58 InternedWrapper<chalk_ir::ConstData<Interner>>, 58 InternedWrapper<chalk_ir::ConstData<Interner>>,
59 InternedWrapper<Vec<chalk_ir::CanonicalVarKind<Interner>>>,
59); 60);
60 61
61impl chalk_ir::interner::Interner for Interner { 62impl chalk_ir::interner::Interner for Interner {
@@ -71,7 +72,7 @@ impl chalk_ir::interner::Interner for Interner {
71 type InternedProgramClauses = Arc<[chalk_ir::ProgramClause<Self>]>; 72 type InternedProgramClauses = Arc<[chalk_ir::ProgramClause<Self>]>;
72 type InternedQuantifiedWhereClauses = Vec<chalk_ir::QuantifiedWhereClause<Self>>; 73 type InternedQuantifiedWhereClauses = Vec<chalk_ir::QuantifiedWhereClause<Self>>;
73 type InternedVariableKinds = Interned<InternedVariableKindsInner>; 74 type InternedVariableKinds = Interned<InternedVariableKindsInner>;
74 type InternedCanonicalVarKinds = Vec<chalk_ir::CanonicalVarKind<Self>>; 75 type InternedCanonicalVarKinds = Interned<InternedWrapper<Vec<chalk_ir::CanonicalVarKind<Self>>>>;
75 type InternedConstraints = Vec<chalk_ir::InEnvironment<chalk_ir::Constraint<Self>>>; 76 type InternedConstraints = Vec<chalk_ir::InEnvironment<chalk_ir::Constraint<Self>>>;
76 type InternedVariances = Arc<[chalk_ir::Variance]>; 77 type InternedVariances = Arc<[chalk_ir::Variance]>;
77 type DefId = InternId; 78 type DefId = InternId;
@@ -370,7 +371,7 @@ impl chalk_ir::interner::Interner for Interner {
370 &self, 371 &self,
371 data: impl IntoIterator<Item = Result<chalk_ir::CanonicalVarKind<Self>, E>>, 372 data: impl IntoIterator<Item = Result<chalk_ir::CanonicalVarKind<Self>, E>>,
372 ) -> Result<Self::InternedCanonicalVarKinds, E> { 373 ) -> Result<Self::InternedCanonicalVarKinds, E> {
373 data.into_iter().collect() 374 Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
374 } 375 }
375 376
376 fn canonical_var_kinds_data<'a>( 377 fn canonical_var_kinds_data<'a>(