@@ -1459,9 +1459,20 @@ fn render_impl(
14591459 // Only render when the method is not static or we allow static methods
14601460 if render_method_item {
14611461 let id = cx. derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
1462+ let source_id = trait_
1463+ . and_then ( |trait_| trait_
1464+ . items . iter ( )
1465+ . find ( |item| item. name . map ( |n| n. as_str ( ) . eq ( & name. as_str ( ) ) ) . unwrap_or ( false ) )
1466+ ) . map ( |item| format ! ( "{}.{}" , item. type_( ) , name) ) ;
14621467 write ! ( w, "<h4 id=\" {}\" class=\" {}{}{}\" >" , id, item_type, extra_class, in_trait_class) ;
14631468 w. write_str ( "<code>" ) ;
1464- render_assoc_item ( w, item, link. anchor ( & id) , ItemType :: Impl , cx) ;
1469+ render_assoc_item (
1470+ w,
1471+ item,
1472+ link. anchor ( source_id. as_ref ( ) . unwrap_or ( & id) ) ,
1473+ ItemType :: Impl ,
1474+ cx
1475+ ) ;
14651476 w. write_str ( "</code>" ) ;
14661477 render_stability_since_raw (
14671478 w,
@@ -1476,14 +1487,15 @@ fn render_impl(
14761487 }
14771488 }
14781489 clean:: TypedefItem ( ref tydef, _) => {
1479- let id = cx. derive_id ( format ! ( "{}.{}" , ItemType :: AssocType , name) ) ;
1490+ let source_id = format ! ( "{}.{}" , ItemType :: AssocType , name) ;
1491+ let id = cx. derive_id ( source_id. clone ( ) ) ;
14801492 write ! ( w, "<h4 id=\" {}\" class=\" {}{}{}\" ><code>" , id, item_type, extra_class, in_trait_class) ;
14811493 assoc_type (
14821494 w,
14831495 item,
14841496 & Vec :: new ( ) ,
14851497 Some ( & tydef. type_ ) ,
1486- link. anchor ( & id ) ,
1498+ link. anchor ( if trait_ . is_some ( ) { & source_id } else { & id } ) ,
14871499 "" ,
14881500 cx. cache ( ) ,
14891501 tcx,
@@ -1493,9 +1505,18 @@ fn render_impl(
14931505 w. write_str ( "</h4>" ) ;
14941506 }
14951507 clean:: AssocConstItem ( ref ty, ref default) => {
1496- let id = cx. derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
1508+ let source_id = format ! ( "{}.{}" , item_type, name) ;
1509+ let id = cx. derive_id ( source_id. clone ( ) ) ;
14971510 write ! ( w, "<h4 id=\" {}\" class=\" {}{}{}\" ><code>" , id, item_type, extra_class, in_trait_class) ;
1498- assoc_const ( w, item, ty, default. as_ref ( ) , link. anchor ( & id) , "" , cx) ;
1511+ assoc_const (
1512+ w,
1513+ item,
1514+ ty,
1515+ default. as_ref ( ) ,
1516+ link. anchor ( if trait_. is_some ( ) { & source_id } else { & id } ) ,
1517+ "" ,
1518+ cx
1519+ ) ;
14991520 w. write_str ( "</code>" ) ;
15001521 render_stability_since_raw (
15011522 w,
@@ -1509,14 +1530,15 @@ fn render_impl(
15091530 w. write_str ( "</h4>" ) ;
15101531 }
15111532 clean:: AssocTypeItem ( ref bounds, ref default) => {
1512- let id = cx. derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
1533+ let source_id = format ! ( "{}.{}" , item_type, name) ;
1534+ let id = cx. derive_id ( source_id. clone ( ) ) ;
15131535 write ! ( w, "<h4 id=\" {}\" class=\" {}{}{}\" ><code>" , id, item_type, extra_class, in_trait_class) ;
15141536 assoc_type (
15151537 w,
15161538 item,
15171539 bounds,
15181540 default. as_ref ( ) ,
1519- link. anchor ( & id ) ,
1541+ link. anchor ( if trait_ . is_some ( ) { & source_id } else { & id } ) ,
15201542 "" ,
15211543 cx. cache ( ) ,
15221544 tcx,
@@ -1613,7 +1635,7 @@ fn render_impl(
16131635 true ,
16141636 outer_version,
16151637 outer_const_version,
1616- None ,
1638+ Some ( t ) ,
16171639 show_def_docs,
16181640 ) ;
16191641 }
0 commit comments