@@ -1725,10 +1725,10 @@ fn item_module(w: &mut fmt::Formatter, cx: &Context,
1725
1725
ItemType :: AssociatedType => ( "associated-types" , "Associated Types" ) ,
1726
1726
ItemType :: AssociatedConst => ( "associated-consts" , "Associated Constants" ) ,
1727
1727
} ;
1728
- try!( write ! ( w ,
1729
- "<h2 id='{id}' class='section-header'>\
1730
- <a href=\" #{id}\" >{name}</a></h2>\n <table>",
1731
- id = short , name = name) ) ;
1728
+ try!( with_unique_id ( short . to_owned ( ) , |id|
1729
+ write ! ( w , "<h2 id='{id}' class='section-header'>\
1730
+ <a href=\" #{id}\" >{name}</a></h2>\n <table>",
1731
+ id = id , name = name) ) ) ;
1732
1732
}
1733
1733
1734
1734
match myitem. inner {
@@ -1949,10 +1949,11 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
1949
1949
1950
1950
fn trait_item ( w : & mut fmt:: Formatter , cx : & Context , m : & clean:: Item )
1951
1951
-> fmt:: Result {
1952
- try!( write ! ( w, "<h3 id='{ty}.{name}' class='method stab {stab}'><code>" ,
1953
- ty = shortty( m) ,
1954
- name = * m. name. as_ref( ) . unwrap( ) ,
1955
- stab = m. stability_class( ) ) ) ;
1952
+ let name = m. name . as_ref ( ) . unwrap ( ) ;
1953
+ try!( with_unique_id ( format ! ( "{}.{}" , shortty( m) , name) , |id|
1954
+ write ! ( w, "<h3 id='{id}' class='method stab {stab}'><code>" ,
1955
+ id = id,
1956
+ stab = m. stability_class( ) ) ) ) ;
1956
1957
try!( render_assoc_item ( w, m, AssocItemLink :: Anchor ) ) ;
1957
1958
try!( write ! ( w, "</code></h3>" ) ) ;
1958
1959
try!( document ( w, cx, m) ) ;
@@ -2141,11 +2142,12 @@ fn item_struct(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2141
2142
if fields. peek ( ) . is_some ( ) {
2142
2143
try!( write ! ( w, "<h2 class='fields'>Fields</h2>\n <table>" ) ) ;
2143
2144
for field in fields {
2144
- try!( write ! ( w, "<tr class='stab {stab}'>
2145
- <td id='structfield.{name}'>\
2146
- <code>{name}</code></td><td>",
2147
- stab = field. stability_class( ) ,
2148
- name = field. name. as_ref( ) . unwrap( ) ) ) ;
2145
+ let name = field. name . as_ref ( ) . unwrap ( ) ;
2146
+ try!( with_unique_id ( format ! ( "structfield.{}" , name) , |id|
2147
+ write ! ( w, "<tr class='stab {}'><td id='{}'><code>{}</code></td><td>" ,
2148
+ field. stability_class( ) ,
2149
+ id,
2150
+ name) ) ) ;
2149
2151
try!( document ( w, cx, field) ) ;
2150
2152
try!( write ! ( w, "</td></tr>" ) ) ;
2151
2153
}
@@ -2212,8 +2214,9 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2212
2214
if !e. variants . is_empty ( ) {
2213
2215
try!( write ! ( w, "<h2 class='variants'>Variants</h2>\n <table>" ) ) ;
2214
2216
for variant in & e. variants {
2215
- try!( write ! ( w, "<tr><td id='variant.{name}'><code>{name}</code></td><td>" ,
2216
- name = variant. name. as_ref( ) . unwrap( ) ) ) ;
2217
+ let name = variant. name . as_ref ( ) . unwrap ( ) ;
2218
+ try!( with_unique_id ( format ! ( "variant.{}" , name) , |id|
2219
+ write ! ( w, "<tr><td id='{}'><code>{}</code></td><td>" , id, name) ) ) ;
2217
2220
try!( document ( w, cx, variant) ) ;
2218
2221
match variant. inner {
2219
2222
clean:: VariantItem ( ref var) => {
@@ -2231,11 +2234,10 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
2231
2234
try!( write ! ( w, "<h3 class='fields'>Fields</h3>\n
2232
2235
<table>" ) ) ;
2233
2236
for field in fields {
2234
- try!( write ! ( w, "<tr><td \
2235
- id='variant.{v}.field.{f}'>\
2236
- <code>{f}</code></td><td>",
2237
- v = variant. name. as_ref( ) . unwrap( ) ,
2238
- f = field. name. as_ref( ) . unwrap( ) ) ) ;
2237
+ let v = variant. name . as_ref ( ) . unwrap ( ) ;
2238
+ let f = field. name . as_ref ( ) . unwrap ( ) ;
2239
+ try!( with_unique_id ( format ! ( "variant.{}.field.{}" , v, f) , |id|
2240
+ write ! ( w, "<tr><td id='{}'><code>{}</code></td><td>" , id, f) ) ) ;
2239
2241
try!( document ( w, cx, field) ) ;
2240
2242
try!( write ! ( w, "</td></tr>" ) ) ;
2241
2243
}
@@ -2447,44 +2449,38 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
2447
2449
2448
2450
fn doctraititem ( w : & mut fmt:: Formatter , cx : & Context , item : & clean:: Item ,
2449
2451
link : AssocItemLink , render_static : bool ) -> fmt:: Result {
2452
+ let name = item. name . as_ref ( ) . unwrap ( ) ;
2450
2453
match item. inner {
2451
2454
clean:: MethodItem ( ..) | clean:: TyMethodItem ( ..) => {
2452
2455
// Only render when the method is not static or we allow static methods
2453
2456
if !is_static_method ( item) || render_static {
2454
- try!( write ! ( w, "<h4 id='method.{}' class='{}'><code>" ,
2455
- * item. name. as_ref( ) . unwrap( ) ,
2456
- shortty( item) ) ) ;
2457
+ try!( with_unique_id ( format ! ( "method.{}" , name) , |id|
2458
+ write ! ( w, "<h4 id='{}' class='{}'><code>" , id, shortty( item) ) ) ) ;
2457
2459
try!( render_assoc_item ( w, item, link) ) ;
2458
2460
try!( write ! ( w, "</code></h4>\n " ) ) ;
2459
2461
}
2460
2462
}
2461
2463
clean:: TypedefItem ( ref tydef, _) => {
2462
- let name = item. name . as_ref ( ) . unwrap ( ) ;
2463
- try!( write ! ( w, "<h4 id='assoc_type.{}' class='{}'><code>" ,
2464
- * name,
2465
- shortty( item) ) ) ;
2464
+ try!( with_unique_id ( format ! ( "assoc_type.{}" , name) , |id|
2465
+ write ! ( w, "<h4 id='{}' class='{}'><code>" , id, shortty( item) ) ) ) ;
2466
2466
try!( write ! ( w, "type {} = {}" , name, tydef. type_) ) ;
2467
2467
try!( write ! ( w, "</code></h4>\n " ) ) ;
2468
2468
}
2469
2469
clean:: AssociatedConstItem ( ref ty, ref default) => {
2470
- let name = item. name . as_ref ( ) . unwrap ( ) ;
2471
- try!( write ! ( w, "<h4 id='assoc_const.{}' class='{}'><code>" ,
2472
- * name, shortty( item) ) ) ;
2470
+ try!( with_unique_id ( format ! ( "assoc_const.{}" , name) , |id|
2471
+ write ! ( w, "<h4 id='{}' class='{}'><code>" , id, shortty( item) ) ) ) ;
2473
2472
try!( assoc_const ( w, item, ty, default. as_ref ( ) ) ) ;
2474
2473
try!( write ! ( w, "</code></h4>\n " ) ) ;
2475
2474
}
2476
2475
clean:: ConstantItem ( ref c) => {
2477
- let name = item. name . as_ref ( ) . unwrap ( ) ;
2478
- try!( write ! ( w, "<h4 id='assoc_const.{}' class='{}'><code>" ,
2479
- * name, shortty( item) ) ) ;
2476
+ try!( with_unique_id ( format ! ( "assoc_const.{}" , name) , |id|
2477
+ write ! ( w, "<h4 id='{}' class='{}'><code>" , id, shortty( item) ) ) ) ;
2480
2478
try!( assoc_const ( w, item, & c. type_ , Some ( & c. expr ) ) ) ;
2481
2479
try!( write ! ( w, "</code></h4>\n " ) ) ;
2482
2480
}
2483
2481
clean:: AssociatedTypeItem ( ref bounds, ref default) => {
2484
- let name = item. name . as_ref ( ) . unwrap ( ) ;
2485
- try!( write ! ( w, "<h4 id='assoc_type.{}' class='{}'><code>" ,
2486
- * name,
2487
- shortty( item) ) ) ;
2482
+ try!( with_unique_id ( format ! ( "assoc_type.{}" , name) , |id|
2483
+ write ! ( w, "<h4 id='{}' class='{}'><code>" , id, shortty( item) ) ) ) ;
2488
2484
try!( assoc_type ( w, item, bounds, default) ) ;
2489
2485
try!( write ! ( w, "</code></h4>\n " ) ) ;
2490
2486
}
0 commit comments