@@ -578,14 +578,23 @@ fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Tra
578
578
info ! ( "Documenting {} on {:?}" , name, t. name) ;
579
579
let item_type = m. type_ ( ) ;
580
580
let id = cx. derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
581
- write ! ( w, "<details class=\" rustdoc-toggle\" open><summary>" ) ;
582
- write ! ( w, "<h3 id=\" {id}\" class=\" method\" ><code>" , id = id, ) ;
581
+ let mut content = Buffer :: empty_from ( w) ;
582
+ document ( & mut content, cx, m, Some ( t) ) ;
583
+ let toggled = !content. is_empty ( ) ;
584
+ if toggled {
585
+ write ! ( w, "<details class=\" rustdoc-toggle\" open><summary>" ) ;
586
+ }
587
+ write ! ( w, "<h3 id=\" {id}\" class=\" method\" ><code>" , id = id) ;
583
588
render_assoc_item ( w, m, AssocItemLink :: Anchor ( Some ( & id) ) , ItemType :: Impl , cx) ;
584
589
w. write_str ( "</code>" ) ;
585
590
render_stability_since ( w, m, t, cx. tcx ( ) ) ;
586
591
write_srclink ( cx, m, w) ;
587
- w. write_str ( "</h3></summary>" ) ;
588
- document ( w, cx, m, Some ( t) ) ;
592
+ w. write_str ( "</h3>" ) ;
593
+ if toggled {
594
+ write ! ( w, "</summary>" ) ;
595
+ w. push_buffer ( content) ;
596
+ write ! ( w, "</details>" ) ;
597
+ }
589
598
}
590
599
591
600
if !types. is_empty ( ) {
0 commit comments