@@ -68,7 +68,7 @@ use hir_ty::{
6868 all_super_traits, autoderef, check_orphan_rules,
6969 consteval:: { try_const_usize, unknown_const_as_generic, ConstExt } ,
7070 diagnostics:: BodyValidationDiagnostic ,
71- error_lifetime, known_const_to_ast,
71+ direct_super_traits , error_lifetime, known_const_to_ast,
7272 layout:: { Layout as TyLayout , RustcEnumVariantIdx , RustcFieldIdx , TagEncoding } ,
7373 method_resolution,
7474 mir:: { interpret_mir, MutBorrowKind } ,
@@ -2704,13 +2704,22 @@ impl Trait {
27042704 db. trait_data ( self . id ) . name . clone ( )
27052705 }
27062706
2707+ pub fn direct_supertraits ( self , db : & dyn HirDatabase ) -> Vec < Trait > {
2708+ let traits = direct_super_traits ( db. upcast ( ) , self . into ( ) ) ;
2709+ traits. iter ( ) . map ( |tr| Trait :: from ( * tr) ) . collect ( )
2710+ }
2711+
2712+ pub fn all_supertraits ( self , db : & dyn HirDatabase ) -> Vec < Trait > {
2713+ let traits = all_super_traits ( db. upcast ( ) , self . into ( ) ) ;
2714+ traits. iter ( ) . map ( |tr| Trait :: from ( * tr) ) . collect ( )
2715+ }
2716+
27072717 pub fn items ( self , db : & dyn HirDatabase ) -> Vec < AssocItem > {
27082718 db. trait_data ( self . id ) . items . iter ( ) . map ( |( _name, it) | ( * it) . into ( ) ) . collect ( )
27092719 }
27102720
27112721 pub fn items_with_supertraits ( self , db : & dyn HirDatabase ) -> Vec < AssocItem > {
2712- let traits = all_super_traits ( db. upcast ( ) , self . into ( ) ) ;
2713- traits. iter ( ) . flat_map ( |tr| Trait :: from ( * tr) . items ( db) ) . collect ( )
2722+ self . all_supertraits ( db) . into_iter ( ) . flat_map ( |tr| tr. items ( db) ) . collect ( )
27142723 }
27152724
27162725 pub fn is_auto ( self , db : & dyn HirDatabase ) -> bool {
0 commit comments