@@ -382,46 +382,58 @@ where
382
382
G :: consider_auto_trait_candidate ( self , goal)
383
383
} else if cx. trait_is_alias ( trait_def_id) {
384
384
G :: consider_trait_alias_candidate ( self , goal)
385
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Sized ) {
386
- G :: consider_builtin_sized_candidate ( self , goal)
387
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Copy )
388
- || cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Clone )
389
- {
390
- G :: consider_builtin_copy_clone_candidate ( self , goal)
391
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: PointerLike ) {
392
- G :: consider_builtin_pointer_like_candidate ( self , goal)
393
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: FnPtrTrait ) {
394
- G :: consider_builtin_fn_ptr_trait_candidate ( self , goal)
395
385
} else if let Some ( kind) = self . cx ( ) . fn_trait_kind_from_def_id ( trait_def_id) {
396
386
G :: consider_builtin_fn_trait_candidates ( self , goal, kind)
397
387
} else if let Some ( kind) = self . cx ( ) . async_fn_trait_kind_from_def_id ( trait_def_id) {
398
388
G :: consider_builtin_async_fn_trait_candidates ( self , goal, kind)
399
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: AsyncFnKindHelper ) {
400
- G :: consider_builtin_async_fn_kind_helper_candidate ( self , goal)
401
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Tuple ) {
402
- G :: consider_builtin_tuple_candidate ( self , goal)
403
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: PointeeTrait ) {
404
- G :: consider_builtin_pointee_candidate ( self , goal)
405
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Future ) {
406
- G :: consider_builtin_future_candidate ( self , goal)
407
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Iterator ) {
408
- G :: consider_builtin_iterator_candidate ( self , goal)
409
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: FusedIterator ) {
410
- G :: consider_builtin_fused_iterator_candidate ( self , goal)
411
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: AsyncIterator ) {
412
- G :: consider_builtin_async_iterator_candidate ( self , goal)
413
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Coroutine ) {
414
- G :: consider_builtin_coroutine_candidate ( self , goal)
415
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: DiscriminantKind ) {
416
- G :: consider_builtin_discriminant_kind_candidate ( self , goal)
417
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: AsyncDestruct ) {
418
- G :: consider_builtin_async_destruct_candidate ( self , goal)
419
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: Destruct ) {
420
- G :: consider_builtin_destruct_candidate ( self , goal)
421
- } else if cx. is_lang_item ( trait_def_id, TraitSolverLangItem :: TransmuteTrait ) {
422
- G :: consider_builtin_transmute_candidate ( self , goal)
423
389
} else {
424
- Err ( NoSolution )
390
+ match cx. as_lang_item ( trait_def_id) {
391
+ Some ( TraitSolverLangItem :: Sized ) => G :: consider_builtin_sized_candidate ( self , goal) ,
392
+ Some ( TraitSolverLangItem :: Copy | TraitSolverLangItem :: Clone ) => {
393
+ G :: consider_builtin_copy_clone_candidate ( self , goal)
394
+ }
395
+ Some ( TraitSolverLangItem :: PointerLike ) => {
396
+ G :: consider_builtin_pointer_like_candidate ( self , goal)
397
+ }
398
+ Some ( TraitSolverLangItem :: FnPtrTrait ) => {
399
+ G :: consider_builtin_fn_ptr_trait_candidate ( self , goal)
400
+ }
401
+ Some ( TraitSolverLangItem :: AsyncFnKindHelper ) => {
402
+ G :: consider_builtin_async_fn_kind_helper_candidate ( self , goal)
403
+ }
404
+ Some ( TraitSolverLangItem :: Tuple ) => G :: consider_builtin_tuple_candidate ( self , goal) ,
405
+ Some ( TraitSolverLangItem :: PointeeTrait ) => {
406
+ G :: consider_builtin_pointee_candidate ( self , goal)
407
+ }
408
+ Some ( TraitSolverLangItem :: Future ) => {
409
+ G :: consider_builtin_future_candidate ( self , goal)
410
+ }
411
+ Some ( TraitSolverLangItem :: Iterator ) => {
412
+ G :: consider_builtin_iterator_candidate ( self , goal)
413
+ }
414
+ Some ( TraitSolverLangItem :: FusedIterator ) => {
415
+ G :: consider_builtin_fused_iterator_candidate ( self , goal)
416
+ }
417
+ Some ( TraitSolverLangItem :: AsyncIterator ) => {
418
+ G :: consider_builtin_async_iterator_candidate ( self , goal)
419
+ }
420
+ Some ( TraitSolverLangItem :: Coroutine ) => {
421
+ G :: consider_builtin_coroutine_candidate ( self , goal)
422
+ }
423
+ Some ( TraitSolverLangItem :: DiscriminantKind ) => {
424
+ G :: consider_builtin_discriminant_kind_candidate ( self , goal)
425
+ }
426
+ Some ( TraitSolverLangItem :: AsyncDestruct ) => {
427
+ G :: consider_builtin_async_destruct_candidate ( self , goal)
428
+ }
429
+ Some ( TraitSolverLangItem :: Destruct ) => {
430
+ G :: consider_builtin_destruct_candidate ( self , goal)
431
+ }
432
+ Some ( TraitSolverLangItem :: TransmuteTrait ) => {
433
+ G :: consider_builtin_transmute_candidate ( self , goal)
434
+ }
435
+ _ => Err ( NoSolution ) ,
436
+ }
425
437
} ;
426
438
427
439
candidates. extend ( result) ;
0 commit comments