@@ -507,33 +507,43 @@ impl AllTypes {
507507 }
508508 }
509509
510+ fn add_item_entry ( & mut self , item_type : ItemType , new_url : String , name : String ) {
511+ match item_type {
512+ ItemType :: Struct => self . structs . insert ( ItemEntry :: new ( new_url, name) ) ,
513+ ItemType :: Enum => self . enums . insert ( ItemEntry :: new ( new_url, name) ) ,
514+ ItemType :: Union => self . unions . insert ( ItemEntry :: new ( new_url, name) ) ,
515+ ItemType :: Primitive => self . primitives . insert ( ItemEntry :: new ( new_url, name) ) ,
516+ ItemType :: Trait => self . traits . insert ( ItemEntry :: new ( new_url, name) ) ,
517+ ItemType :: Macro => self . macros . insert ( ItemEntry :: new ( new_url, name) ) ,
518+ ItemType :: Function => self . functions . insert ( ItemEntry :: new ( new_url, name) ) ,
519+ ItemType :: TypeAlias => self . type_aliases . insert ( ItemEntry :: new ( new_url, name) ) ,
520+ ItemType :: Static => self . statics . insert ( ItemEntry :: new ( new_url, name) ) ,
521+ ItemType :: Constant => self . constants . insert ( ItemEntry :: new ( new_url, name) ) ,
522+ ItemType :: ProcAttribute | ItemType :: BangMacroAttribute => {
523+ self . attribute_macros . insert ( ItemEntry :: new ( new_url, name) )
524+ }
525+ ItemType :: ProcDerive | ItemType :: BangMacroDerive => {
526+ self . derive_macros . insert ( ItemEntry :: new ( new_url, name) )
527+ }
528+ ItemType :: TraitAlias => self . trait_aliases . insert ( ItemEntry :: new ( new_url, name) ) ,
529+ _ => true ,
530+ } ;
531+ }
532+
510533 fn append ( & mut self , item_name : String , item : & clean:: Item ) {
511534 let mut url: Vec < _ > = item_name. split ( "::" ) . skip ( 1 ) . collect ( ) ;
512535 if let Some ( name) = url. pop ( ) {
513536 let new_url = format ! ( "{}/{}" , url. join( "/" ) , item. html_filename( ) ) ;
514537 url. push ( name) ;
515- let item_type = item. type_ ( ) ;
516538 let name = url. join ( "::" ) ;
517- match item_type {
518- ItemType :: Struct => self . structs . insert ( ItemEntry :: new ( new_url, name) ) ,
519- ItemType :: Enum => self . enums . insert ( ItemEntry :: new ( new_url, name) ) ,
520- ItemType :: Union => self . unions . insert ( ItemEntry :: new ( new_url, name) ) ,
521- ItemType :: Primitive => self . primitives . insert ( ItemEntry :: new ( new_url, name) ) ,
522- ItemType :: Trait => self . traits . insert ( ItemEntry :: new ( new_url, name) ) ,
523- ItemType :: Macro => self . macros . insert ( ItemEntry :: new ( new_url, name) ) ,
524- ItemType :: Function => self . functions . insert ( ItemEntry :: new ( new_url, name) ) ,
525- ItemType :: TypeAlias => self . type_aliases . insert ( ItemEntry :: new ( new_url, name) ) ,
526- ItemType :: Static => self . statics . insert ( ItemEntry :: new ( new_url, name) ) ,
527- ItemType :: Constant => self . constants . insert ( ItemEntry :: new ( new_url, name) ) ,
528- ItemType :: ProcAttribute | ItemType :: BangMacroAttribute => {
529- self . attribute_macros . insert ( ItemEntry :: new ( new_url, name) )
530- }
531- ItemType :: ProcDerive | ItemType :: BangMacroDerive => {
532- self . derive_macros . insert ( ItemEntry :: new ( new_url, name) )
539+ let mut types = item. types ( ) ;
540+ if types. len ( ) == 1 {
541+ self . add_item_entry ( types. pop ( ) . unwrap ( ) , new_url, name) ;
542+ } else {
543+ for type_ in types {
544+ self . add_item_entry ( type_, new_url. clone ( ) , name. clone ( ) ) ;
533545 }
534- ItemType :: TraitAlias => self . trait_aliases . insert ( ItemEntry :: new ( new_url, name) ) ,
535- _ => true ,
536- } ;
546+ }
537547 }
538548 }
539549
0 commit comments