Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/layout/adt.rs')
| -rw-r--r-- | crates/hir-ty/src/layout/adt.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/crates/hir-ty/src/layout/adt.rs b/crates/hir-ty/src/layout/adt.rs index d9791a4b63..e938295535 100644 --- a/crates/hir-ty/src/layout/adt.rs +++ b/crates/hir-ty/src/layout/adt.rs @@ -8,7 +8,7 @@ use hir_def::{ AdtId, EnumVariantId, LocalEnumVariantId, VariantId, }; use la_arena::RawIdx; -use rustc_index::vec::IndexVec; +use smallvec::SmallVec; use crate::{db::HirDatabase, lang_items::is_unsafe_cell, layout::field_ty, Substitution}; @@ -34,13 +34,13 @@ pub fn layout_of_adt_query( let (variants, is_enum, is_union, repr) = match def { AdtId::StructId(s) => { let data = db.struct_data(s); - let mut r = IndexVec::new(); + let mut r = SmallVec::<[_; 1]>::new(); r.push(handle_variant(s.into(), &data.variant_data)?); (r, false, false, data.repr.unwrap_or_default()) } AdtId::UnionId(id) => { let data = db.union_data(id); - let mut r = IndexVec::new(); + let mut r = SmallVec::new(); r.push(handle_variant(id.into(), &data.variant_data)?); (r, false, true, data.repr.unwrap_or_default()) } @@ -55,11 +55,12 @@ pub fn layout_of_adt_query( &v.variant_data, ) }) - .collect::<Result<IndexVec<RustcEnumVariantIdx, _>, _>>()?; + .collect::<Result<SmallVec<_>, _>>()?; (r, true, false, data.repr.unwrap_or_default()) } }; - let variants = variants.iter().map(|x| x.iter().collect::<Vec<_>>()).collect::<Vec<_>>(); + let variants = + variants.iter().map(|x| x.iter().collect::<Vec<_>>()).collect::<SmallVec<[_; 1]>>(); let variants = variants.iter().map(|x| x.iter().collect()).collect(); if is_union { cx.layout_of_union(&repr, &variants).ok_or(LayoutError::Unknown) |