@@ -164,7 +164,7 @@ fn layout_of_simd_ty(
164
164
} ;
165
165
166
166
// Compute the ABI of the element type:
167
- let e_ly = db. layout_of_ty ( e_ty, env. clone ( ) ) ?;
167
+ let e_ly = db. layout_of_ty ( e_ty, env) ?;
168
168
let Abi :: Scalar ( e_abi) = e_ly. abi else {
169
169
return Err ( LayoutError :: Unknown ) ;
170
170
} ;
@@ -204,17 +204,17 @@ pub fn layout_of_ty_query(
204
204
} ;
205
205
let cx = LayoutCx { target : & target } ;
206
206
let dl = & * cx. current_data_layout ( ) ;
207
- let ty = normalize ( db, trait_env. clone ( ) , ty. clone ( ) ) ;
207
+ let ty = normalize ( db, trait_env. clone ( ) , ty) ;
208
208
let result = match ty. kind ( Interner ) {
209
209
TyKind :: Adt ( AdtId ( def) , subst) => {
210
210
if let hir_def:: AdtId :: StructId ( s) = def {
211
211
let data = db. struct_data ( * s) ;
212
212
let repr = data. repr . unwrap_or_default ( ) ;
213
213
if repr. simd ( ) {
214
- return layout_of_simd_ty ( db, * s, subst, trait_env. clone ( ) , & target) ;
214
+ return layout_of_simd_ty ( db, * s, subst, trait_env, & target) ;
215
215
}
216
216
} ;
217
- return db. layout_of_adt ( * def, subst. clone ( ) , trait_env. clone ( ) ) ;
217
+ return db. layout_of_adt ( * def, subst. clone ( ) , trait_env) ;
218
218
}
219
219
TyKind :: Scalar ( s) => match s {
220
220
chalk_ir:: Scalar :: Bool => Layout :: scalar (
@@ -280,7 +280,7 @@ pub fn layout_of_ty_query(
280
280
}
281
281
TyKind :: Array ( element, count) => {
282
282
let count = try_const_usize ( db, & count) . ok_or ( LayoutError :: HasErrorConst ) ? as u64 ;
283
- let element = db. layout_of_ty ( element. clone ( ) , trait_env. clone ( ) ) ?;
283
+ let element = db. layout_of_ty ( element. clone ( ) , trait_env) ?;
284
284
let size = element. size . checked_mul ( count, dl) . ok_or ( LayoutError :: SizeOverflow ) ?;
285
285
286
286
let abi = if count != 0 && matches ! ( element. abi, Abi :: Uninhabited ) {
@@ -303,7 +303,7 @@ pub fn layout_of_ty_query(
303
303
}
304
304
}
305
305
TyKind :: Slice ( element) => {
306
- let element = db. layout_of_ty ( element. clone ( ) , trait_env. clone ( ) ) ?;
306
+ let element = db. layout_of_ty ( element. clone ( ) , trait_env) ?;
307
307
Layout {
308
308
variants : Variants :: Single { index : struct_variant_idx ( ) } ,
309
309
fields : FieldsShape :: Array { stride : element. size , count : 0 } ,
@@ -345,7 +345,7 @@ pub fn layout_of_ty_query(
345
345
} ) )
346
346
. intern ( Interner ) ;
347
347
}
348
- unsized_part = normalize ( db, trait_env. clone ( ) , unsized_part) ;
348
+ unsized_part = normalize ( db, trait_env, unsized_part) ;
349
349
let metadata = match unsized_part. kind ( Interner ) {
350
350
TyKind :: Slice ( _) | TyKind :: Str => {
351
351
scalar_unit ( dl, Primitive :: Int ( dl. ptr_sized_integer ( ) , false ) )
@@ -384,7 +384,7 @@ pub fn layout_of_ty_query(
384
384
match impl_trait_id {
385
385
crate :: ImplTraitId :: ReturnTypeImplTrait ( func, idx) => {
386
386
let infer = db. infer ( func. into ( ) ) ;
387
- return db. layout_of_ty ( infer. type_of_rpit [ idx] . clone ( ) , trait_env. clone ( ) ) ;
387
+ return db. layout_of_ty ( infer. type_of_rpit [ idx] . clone ( ) , trait_env) ;
388
388
}
389
389
crate :: ImplTraitId :: AsyncBlockTypeImplTrait ( _, _) => {
390
390
return Err ( LayoutError :: NotImplemented )
0 commit comments