Skip to content

Commit 8154a6b

Browse files
committed
rustdoc: Don't add extra newlines for fully opaque structs
Changes the definition for opaque structs to look like `pub struct Vec<T> { /* fields omitted */ }` to save space on the page. Also only use one line for empty braced structs.
1 parent ea45edf commit 8154a6b

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/librustdoc/html/render.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2509,19 +2509,28 @@ fn render_struct(w: &mut fmt::Formatter, it: &clean::Item,
25092509
if let Some(g) = g {
25102510
write!(w, "{}", WhereClause(g))?
25112511
}
2512-
write!(w, " {{\n{}", tab)?;
2512+
let mut has_visible_fields = false;
2513+
write!(w, " {{")?;
25132514
for field in fields {
25142515
if let clean::StructFieldItem(ref ty) = field.inner {
2515-
write!(w, " {}{}: {},\n{}",
2516+
write!(w, "\n{} {}{}: {},",
2517+
tab,
25162518
VisSpace(&field.visibility),
25172519
field.name.as_ref().unwrap(),
2518-
*ty,
2519-
tab)?;
2520+
*ty)?;
2521+
has_visible_fields = true;
25202522
}
25212523
}
25222524

2523-
if it.has_stripped_fields().unwrap() {
2524-
write!(w, " // some fields omitted\n{}", tab)?;
2525+
if has_visible_fields {
2526+
if it.has_stripped_fields().unwrap() {
2527+
write!(w, "\n{} // some fields omitted", tab)?;
2528+
}
2529+
write!(w, "\n{}", tab)?;
2530+
} else if it.has_stripped_fields().unwrap() {
2531+
// If there are no visible fields we can just display
2532+
// `{ /* fields omitted */ }` to save space.
2533+
write!(w, " /* fields omitted */ ")?;
25252534
}
25262535
write!(w, "}}")?;
25272536
}

src/test/rustdoc/structfields.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,13 @@ pub enum Qux {
4848
// @has - //pre "// some fields omitted"
4949
},
5050
}
51+
52+
// @has structfields/struct.Baz.html //pre "pub struct Baz { /* fields omitted */ }"
53+
pub struct Baz {
54+
x: u8,
55+
#[doc(hidden)]
56+
pub y: u8,
57+
}
58+
59+
// @has structfields/struct.Quux.html //pre "pub struct Quux {}"
60+
pub struct Quux {}

0 commit comments

Comments
 (0)