Skip to content

Commit 8d6cb18

Browse files
committed
rustdoc: display field types together with names in detailed docs
Fixes: #32024
1 parent 50909f2 commit 8d6cb18

File tree

2 files changed

+38
-14
lines changed

2 files changed

+38
-14
lines changed

src/librustdoc/html/render.rs

+20-12
Original file line numberDiff line numberDiff line change
@@ -2247,18 +2247,22 @@ fn item_struct(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
22472247
}).peekable();
22482248
if let doctree::Plain = s.struct_type {
22492249
if fields.peek().is_some() {
2250-
write!(w, "<h2 class='fields'>Fields</h2>\n<table>")?;
2250+
write!(w, "<h2 class='fields'>Fields</h2>\n<dl>")?;
22512251
for field in fields {
2252-
write!(w, "<tr class='stab {stab}'>
2253-
<td id='{shortty}.{name}'>\
2254-
<code>{name}</code></td><td>",
2252+
write!(w, "<dt class='stab {stab}' id='{shortty}.{name}'>\
2253+
<code>{name}",
22552254
shortty = ItemType::StructField,
22562255
stab = field.stability_class(),
22572256
name = field.name.as_ref().unwrap())?;
2257+
if let clean::StructFieldItem(ref ty) = field.inner {
2258+
write!(w, ": {}</code></dt><dd>", ty)?;
2259+
} else {
2260+
write!(w, "</code></dt><dd>")?;
2261+
}
22582262
document(w, cx, field)?;
2259-
write!(w, "</td></tr>")?;
2263+
write!(w, "</dd>")?;
22602264
}
2261-
write!(w, "</table>")?;
2265+
write!(w, "</dl>")?;
22622266
}
22632267
}
22642268
render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All)
@@ -2336,18 +2340,22 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
23362340
}
23372341
});
23382342
write!(w, "<h3 class='fields'>Fields</h3>\n
2339-
<table>")?;
2343+
<dl>")?;
23402344
for field in fields {
2341-
write!(w, "<tr><td \
2342-
id='{shortty}.{v}.field.{f}'>\
2343-
<code>{f}</code></td><td>",
2345+
write!(w, "<dt id='{shortty}.{v}.field.{f}'>\
2346+
<code>{f}",
23442347
shortty = ItemType::Variant,
23452348
v = variant.name.as_ref().unwrap(),
23462349
f = field.name.as_ref().unwrap())?;
2350+
if let clean::StructFieldItem(ref ty) = field.inner {
2351+
write!(w, ": {}</code></dt><dd>", ty)?;
2352+
} else {
2353+
write!(w, "</code></dt><dd>")?;
2354+
}
23472355
document(w, cx, field)?;
2348-
write!(w, "</td></tr>")?;
2356+
write!(w, "</dd>")?;
23492357
}
2350-
write!(w, "</table>")?;
2358+
write!(w, "</dl>")?;
23512359
}
23522360
write!(w, "</td><td>")?;
23532361
render_stability_since(w, variant, it)?;

src/test/rustdoc/structfields.rs

+18-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ pub struct Bar {
3232
// @has structfields/enum.Qux.html
3333
pub enum Qux {
3434
Quz {
35-
// @has - //pre "a: ()"
36-
a: (),
35+
// @has - //pre "a: Option<Box<()>>"
36+
a: Option<Box<()>>,
3737
// @!has - //pre "b: ()"
3838
#[doc(hidden)]
3939
b: (),
@@ -42,3 +42,19 @@ pub enum Qux {
4242
// @has - //pre "// some fields omitted"
4343
},
4444
}
45+
46+
pub struct FieldDoc {
47+
// @has structfields/struct.FieldDoc.html '//dt[@id="structfield.a"]' "a: i32"
48+
// @has - //dd "field a"
49+
/// field a
50+
pub a: i32,
51+
}
52+
53+
pub enum EnumFieldDoc {
54+
E {
55+
// @has structfields/enum.EnumFieldDoc.html '//dt[@id="variant.E.field.a"]' "a: i32"
56+
// @has - //dd "field a"
57+
/// field a
58+
a: i32,
59+
}
60+
}

0 commit comments

Comments
 (0)