From 9faea2364dee4fbc9391ad233c570b70256ef002 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 13 Mar 2020 16:05:46 +0100 Subject: Use `dyn Trait` for working with databse It improves compile time in `--release` mode quite a bit, it doesn't really slow things down and, conceptually, it seems closer to what we want the physical architecture to look like (we don't want to monomorphise EVERYTHING in a single leaf crate). --- crates/ra_hir_def/src/adt.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'crates/ra_hir_def/src/adt.rs') diff --git a/crates/ra_hir_def/src/adt.rs b/crates/ra_hir_def/src/adt.rs index 2bdfc2b8d..d55c49938 100644 --- a/crates/ra_hir_def/src/adt.rs +++ b/crates/ra_hir_def/src/adt.rs @@ -52,14 +52,14 @@ pub struct StructFieldData { } impl StructData { - pub(crate) fn struct_data_query(db: &impl DefDatabase, id: StructId) -> Arc { + pub(crate) fn struct_data_query(db: &dyn DefDatabase, id: StructId) -> Arc { let src = id.lookup(db).source(db); let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); let variant_data = VariantData::new(db, src.map(|s| s.kind())); let variant_data = Arc::new(variant_data); Arc::new(StructData { name, variant_data }) } - pub(crate) fn union_data_query(db: &impl DefDatabase, id: UnionId) -> Arc { + pub(crate) fn union_data_query(db: &dyn DefDatabase, id: UnionId) -> Arc { let src = id.lookup(db).source(db); let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); let variant_data = VariantData::new( @@ -76,7 +76,7 @@ impl StructData { } impl EnumData { - pub(crate) fn enum_data_query(db: &impl DefDatabase, e: EnumId) -> Arc { + pub(crate) fn enum_data_query(db: &dyn DefDatabase, e: EnumId) -> Arc { let _p = profile("enum_data_query"); let src = e.lookup(db).source(db); let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); @@ -94,7 +94,7 @@ impl EnumData { impl HasChildSource for EnumId { type ChildId = LocalEnumVariantId; type Value = ast::EnumVariant; - fn child_source(&self, db: &impl DefDatabase) -> InFile> { + fn child_source(&self, db: &dyn DefDatabase) -> InFile> { let src = self.lookup(db).source(db); let mut trace = Trace::new_for_map(); lower_enum(db, &mut trace, &src); @@ -103,7 +103,7 @@ impl HasChildSource for EnumId { } fn lower_enum( - db: &impl DefDatabase, + db: &dyn DefDatabase, trace: &mut Trace, ast: &InFile, ) { @@ -119,7 +119,7 @@ fn lower_enum( } impl VariantData { - fn new(db: &impl DefDatabase, flavor: InFile) -> Self { + fn new(db: &dyn DefDatabase, flavor: InFile) -> Self { let mut trace = Trace::new_for_arena(); match lower_struct(db, &mut trace, &flavor) { StructKind::Tuple => VariantData::Tuple(trace.into_arena()), @@ -153,7 +153,7 @@ impl HasChildSource for VariantId { type ChildId = LocalStructFieldId; type Value = Either; - fn child_source(&self, db: &impl DefDatabase) -> InFile> { + fn child_source(&self, db: &dyn DefDatabase) -> InFile> { let src = match self { VariantId::EnumVariantId(it) => { // I don't really like the fact that we call into parent source @@ -182,7 +182,7 @@ pub enum StructKind { } fn lower_struct( - db: &impl DefDatabase, + db: &dyn DefDatabase, trace: &mut Trace< LocalStructFieldId, StructFieldData, -- cgit v1.2.3