@@ -2036,14 +2036,18 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2036
2036
fn trait_item ( w : & mut fmt:: Formatter , cx : & Context , m : & clean:: Item , t : & clean:: Item )
2037
2037
-> fmt:: Result {
2038
2038
let name = m. name . as_ref ( ) . unwrap ( ) ;
2039
- let id = derive_id ( format ! ( "{}.{}" , item_type( m) , name) ) ;
2040
- write ! ( w, "<h3 id='{id}' class='method stab {stab}'><code>" ,
2039
+ let item_type = item_type ( m) ;
2040
+ let id = derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
2041
+ let ns_id = derive_id ( format ! ( "{}.{}" , name, item_type. name_space( ) ) ) ;
2042
+ write ! ( w, "<h3 id='{id}' class='method stab {stab}'>\
2043
+ <span id='{ns_id}' class='invisible'><code>",
2041
2044
id = id,
2042
- stab = m. stability_class( ) ) ?;
2045
+ stab = m. stability_class( ) ,
2046
+ ns_id = ns_id) ?;
2043
2047
render_assoc_item ( w, m, AssocItemLink :: Anchor ( Some ( & id) ) ) ?;
2044
2048
write ! ( w, "</code>" ) ?;
2045
2049
render_stability_since ( w, m, t) ?;
2046
- write ! ( w, "</h3>" ) ?;
2050
+ write ! ( w, "</span></ h3>" ) ?;
2047
2051
document ( w, cx, m) ?;
2048
2052
Ok ( ( ) )
2049
2053
}
@@ -2282,12 +2286,19 @@ fn item_struct(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2282
2286
if fields. peek ( ) . is_some ( ) {
2283
2287
write ! ( w, "<h2 class='fields'>Fields</h2>" ) ?;
2284
2288
for ( field, ty) in fields {
2285
- write ! ( w, "<span id='{item_type}.{name}' class='{item_type}'>
2286
- <a id='{name}.{name_space}'>
2289
+ let id = derive_id ( format ! ( "{}.{}" ,
2290
+ ItemType :: StructField ,
2291
+ field. name. as_ref( ) . unwrap( ) ) ) ;
2292
+ let ns_id = derive_id ( format ! ( "{}.{}" ,
2293
+ field. name. as_ref( ) . unwrap( ) ,
2294
+ ItemType :: StructField . name_space( ) ) ) ;
2295
+ write ! ( w, "<span id='{id}' class='{item_type}'>
2296
+ <span id='{ns_id}' class='invisible'>
2287
2297
<code>{name}: {ty}</code>
2288
- </a ></span><span class='stab {stab}'></span>" ,
2298
+ </span ></span><span class='stab {stab}'></span>" ,
2289
2299
item_type = ItemType :: StructField ,
2290
- name_space = ItemType :: StructField . name_space( ) ,
2300
+ id = id,
2301
+ ns_id = ns_id,
2291
2302
stab = field. stability_class( ) ,
2292
2303
name = field. name. as_ref( ) . unwrap( ) ,
2293
2304
ty = ty) ?;
@@ -2356,10 +2367,16 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2356
2367
if !e. variants . is_empty ( ) {
2357
2368
write ! ( w, "<h2 class='variants'>Variants</h2>\n " ) ?;
2358
2369
for variant in & e. variants {
2359
- write ! ( w, "<span id='{item_type}.{name}' class='variant'>\
2360
- <a id='{name}.{name_space}'><code>{name}",
2361
- item_type = ItemType :: Variant ,
2362
- name_space = ItemType :: Variant . name_space( ) ,
2370
+ let id = derive_id ( format ! ( "{}.{}" ,
2371
+ ItemType :: Variant ,
2372
+ variant. name. as_ref( ) . unwrap( ) ) ) ;
2373
+ let ns_id = derive_id ( format ! ( "{}.{}" ,
2374
+ variant. name. as_ref( ) . unwrap( ) ,
2375
+ ItemType :: Variant . name_space( ) ) ) ;
2376
+ write ! ( w, "<span id='{id}' class='variant'>\
2377
+ <span id='{ns_id}' class='invisible'><code>{name}",
2378
+ id = id,
2379
+ ns_id = ns_id,
2363
2380
name = variant. name. as_ref( ) . unwrap( ) ) ?;
2364
2381
if let clean:: VariantItem ( ref var) = variant. inner {
2365
2382
if let clean:: TupleVariant ( ref tys) = var. kind {
@@ -2373,7 +2390,7 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2373
2390
write ! ( w, ")" ) ?;
2374
2391
}
2375
2392
}
2376
- write ! ( w, "</code></a ></span>" ) ?;
2393
+ write ! ( w, "</code></span ></span>" ) ?;
2377
2394
document ( w, cx, variant) ?;
2378
2395
2379
2396
use clean:: { Variant , StructVariant } ;
@@ -2383,14 +2400,21 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2383
2400
for field in & s. fields {
2384
2401
use clean:: StructFieldItem ;
2385
2402
if let StructFieldItem ( ref ty) = field. inner {
2403
+ let id = derive_id ( format ! ( "variant.{}.field.{}" ,
2404
+ variant. name. as_ref( ) . unwrap( ) ,
2405
+ field. name. as_ref( ) . unwrap( ) ) ) ;
2406
+ let ns_id = derive_id ( format ! ( "{}.{}.{}.{}" ,
2407
+ variant. name. as_ref( ) . unwrap( ) ,
2408
+ ItemType :: Variant . name_space( ) ,
2409
+ field. name. as_ref( ) . unwrap( ) ,
2410
+ ItemType :: StructField . name_space( ) ) ) ;
2386
2411
write ! ( w, "<tr><td \
2387
- id='variant.{v}.field.{f}'>\
2388
- <a id='{v}.{vns}.{f}.{fns}'>\
2389
- <code>{f}: {t}</code></a></td><td>",
2390
- v = variant. name. as_ref( ) . unwrap( ) ,
2412
+ id='{id}'>\
2413
+ <span id='{ns_id}' class='invisible'>\
2414
+ <code>{f}: {t}</code></span></td><td>",
2415
+ id = id,
2416
+ ns_id = ns_id,
2391
2417
f = field. name. as_ref( ) . unwrap( ) ,
2392
- vns = ItemType :: Variant . name_space( ) ,
2393
- fns = ItemType :: StructField . name_space( ) ,
2394
2418
t = * ty) ?;
2395
2419
document ( w, cx, field) ?;
2396
2420
write ! ( w, "</td></tr>" ) ?;
@@ -2606,10 +2630,10 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
2606
2630
}
2607
2631
}
2608
2632
2609
- fn doctraititem ( w : & mut fmt:: Formatter , cx : & Context , item : & clean:: Item ,
2610
- link : AssocItemLink , render_static : bool ,
2611
- is_default_item : bool , outer_version : Option < & str > ,
2612
- trait_ : Option < & clean:: Trait > ) -> fmt:: Result {
2633
+ fn doc_impl_item ( w : & mut fmt:: Formatter , cx : & Context , item : & clean:: Item ,
2634
+ link : AssocItemLink , render_static : bool ,
2635
+ is_default_item : bool , outer_version : Option < & str > ,
2636
+ trait_ : Option < & clean:: Trait > ) -> fmt:: Result {
2613
2637
let item_type = item_type ( item) ;
2614
2638
let name = item. name . as_ref ( ) . unwrap ( ) ;
2615
2639
@@ -2624,42 +2648,47 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
2624
2648
// Only render when the method is not static or we allow static methods
2625
2649
if !is_static || render_static {
2626
2650
let id = derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
2651
+ let ns_id = derive_id ( format ! ( "{}.{}" , name, item_type. name_space( ) ) ) ;
2627
2652
write ! ( w, "<h4 id='{}' class='{}'>" , id, item_type) ?;
2628
- write ! ( w, "<a id='{}.{}' >" , name , item_type . name_space ( ) ) ?;
2653
+ write ! ( w, "<span id='{}' class='invisible' >" , ns_id ) ?;
2629
2654
write ! ( w, "<code>" ) ?;
2630
2655
render_assoc_item ( w, item, link. anchor ( & id) ) ?;
2631
2656
write ! ( w, "</code>" ) ?;
2632
2657
render_stability_since_raw ( w, item. stable_since ( ) , outer_version) ?;
2633
- write ! ( w, "</a ></h4>\n " ) ?;
2658
+ write ! ( w, "</span ></h4>\n " ) ?;
2634
2659
}
2635
2660
}
2636
2661
clean:: TypedefItem ( ref tydef, _) => {
2637
2662
let id = derive_id ( format ! ( "{}.{}" , ItemType :: AssociatedType , name) ) ;
2663
+ let ns_id = derive_id ( format ! ( "{}.{}" , name, item_type. name_space( ) ) ) ;
2638
2664
write ! ( w, "<h4 id='{}' class='{}'>" , id, item_type) ?;
2639
- write ! ( w, "<a id='{}.{}' ><code>" , name , item_type . name_space ( ) ) ?;
2665
+ write ! ( w, "<span id='{}' class='invisible' ><code>" , ns_id ) ?;
2640
2666
assoc_type ( w, item, & Vec :: new ( ) , Some ( & tydef. type_ ) , link. anchor ( & id) ) ?;
2641
- write ! ( w, "</code></a ></h4>\n " ) ?;
2667
+ write ! ( w, "</code></span ></h4>\n " ) ?;
2642
2668
}
2643
2669
clean:: AssociatedConstItem ( ref ty, ref default) => {
2644
2670
let id = derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
2671
+ let ns_id = derive_id ( format ! ( "{}.{}" , name, item_type. name_space( ) ) ) ;
2645
2672
write ! ( w, "<h4 id='{}' class='{}'>" , id, item_type) ?;
2646
- write ! ( w, "<a id='{}.{}' ><code>" , name , item_type . name_space ( ) ) ?;
2673
+ write ! ( w, "<span id='{}' class='invisible' ><code>" , ns_id ) ?;
2647
2674
assoc_const ( w, item, ty, default. as_ref ( ) , link. anchor ( & id) ) ?;
2648
- write ! ( w, "</code></a ></h4>\n " ) ?;
2675
+ write ! ( w, "</code></span ></h4>\n " ) ?;
2649
2676
}
2650
2677
clean:: ConstantItem ( ref c) => {
2651
2678
let id = derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
2679
+ let ns_id = derive_id ( format ! ( "{}.{}" , name, item_type. name_space( ) ) ) ;
2652
2680
write ! ( w, "<h4 id='{}' class='{}'>" , id, item_type) ?;
2653
- write ! ( w, "<a id='{}.{}' ><code>" , name , item_type . name_space ( ) ) ?;
2681
+ write ! ( w, "<span id='{}' class='invisible' ><code>" , ns_id ) ?;
2654
2682
assoc_const ( w, item, & c. type_ , Some ( & c. expr ) , link. anchor ( & id) ) ?;
2655
- write ! ( w, "</code></a ></h4>\n " ) ?;
2683
+ write ! ( w, "</code></span ></h4>\n " ) ?;
2656
2684
}
2657
2685
clean:: AssociatedTypeItem ( ref bounds, ref default) => {
2658
2686
let id = derive_id ( format ! ( "{}.{}" , item_type, name) ) ;
2687
+ let ns_id = derive_id ( format ! ( "{}.{}" , name, item_type. name_space( ) ) ) ;
2659
2688
write ! ( w, "<h4 id='{}' class='{}'>" , id, item_type) ?;
2660
- write ! ( w, "<a id='{}.{}' ><code>" , name , item_type . name_space ( ) ) ?;
2689
+ write ! ( w, "<span id='{}' class='invisible' ><code>" , ns_id ) ?;
2661
2690
assoc_type ( w, item, bounds, default. as_ref ( ) , link. anchor ( & id) ) ?;
2662
- write ! ( w, "</code></a ></h4>\n " ) ?;
2691
+ write ! ( w, "</code></span ></h4>\n " ) ?;
2663
2692
}
2664
2693
clean:: StrippedItem ( ..) => return Ok ( ( ) ) ,
2665
2694
_ => panic ! ( "can't make docs for trait item with name {:?}" , item. name)
@@ -2698,8 +2727,8 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
2698
2727
2699
2728
write ! ( w, "<div class='impl-items'>" ) ?;
2700
2729
for trait_item in & i. inner_impl ( ) . items {
2701
- doctraititem ( w, cx, trait_item, link, render_header,
2702
- false , outer_version, trait_) ?;
2730
+ doc_impl_item ( w, cx, trait_item, link, render_header,
2731
+ false , outer_version, trait_) ?;
2703
2732
}
2704
2733
2705
2734
fn render_default_items ( w : & mut fmt:: Formatter ,
@@ -2716,8 +2745,8 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
2716
2745
let did = i. trait_ . as_ref ( ) . unwrap ( ) . def_id ( ) . unwrap ( ) ;
2717
2746
let assoc_link = AssocItemLink :: GotoSource ( did, & i. provided_trait_methods ) ;
2718
2747
2719
- doctraititem ( w, cx, trait_item, assoc_link, render_static, true ,
2720
- outer_version, None ) ?;
2748
+ doc_impl_item ( w, cx, trait_item, assoc_link, render_static, true ,
2749
+ outer_version, None ) ?;
2721
2750
}
2722
2751
Ok ( ( ) )
2723
2752
}
0 commit comments