diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 5fb2d9f6f917c..494dccdb7e575 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -2857,7 +2857,7 @@ fn item_struct(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Struct wrap_into_docblock(w, |w| { write!(w, "
"); render_attributes(w, it, true); - render_struct(w, it, Some(&s.generics), s.struct_type, &s.fields, "", true); + render_struct(w, it, Some(&s.generics), s.struct_type, &s.fields, "", false); write!(w, "") }); @@ -2970,9 +2970,19 @@ fn item_enum(w: &mut Buffer, cx: &Context, it: &clean::Item, e: &clean::Enum, ca let name = v.name.as_ref().unwrap(); match v.inner { clean::VariantItem(ref var) => match var.kind { - clean::VariantKind::CLike => write!(w, "{}", name), + clean::VariantKind::CLike => { + write!( + w, + "{}", + name, name + ); + } clean::VariantKind::Tuple(ref tys) => { - write!(w, "{}(", name); + write!( + w, + "{}(", + name, name + ); for (i, ty) in tys.iter().enumerate() { if i > 0 { write!(w, ", ") @@ -2982,7 +2992,7 @@ fn item_enum(w: &mut Buffer, cx: &Context, it: &clean::Item, e: &clean::Enum, ca write!(w, ")"); } clean::VariantKind::Struct(ref s) => { - render_struct(w, v, None, s.struct_type, &s.fields, " ", false); + render_struct(w, v, None, s.struct_type, &s.fields, " ", true); } }, _ => unreachable!(), @@ -3126,15 +3136,21 @@ fn render_struct( ty: doctree::StructType, fields: &[clean::Item], tab: &str, - structhead: bool, + enum_variant: bool, ) { - write!( - w, - "{}{}{}", - it.visibility.print_with_space(), - if structhead { "struct " } else { "" }, - it.name.as_ref().unwrap() - ); + write!(w, "{}", it.visibility.print_with_space()); + // If this is an enum variant we should not write `struct` and the + // name should be a link to the description of the variant. + if enum_variant { + write!( + w, + "{}", + it.name.as_ref().unwrap(), + it.name.as_ref().unwrap() + ); + } else { + write!(w, "struct {}", it.name.as_ref().unwrap()); + } if let Some(g) = g { write!(w, "{}", g.print()) } diff --git a/src/librustdoc/html/static/themes/ayu.css b/src/librustdoc/html/static/themes/ayu.css index f4710f6ae873a..39551d9445b9c 100644 --- a/src/librustdoc/html/static/themes/ayu.css +++ b/src/librustdoc/html/static/themes/ayu.css @@ -181,6 +181,9 @@ pre { .content span.enum, .content a.enum { color: #99e0c9; } +.content span.variant, .content a.variant { + color: #6380a0; +} .content span.trait, .content a.trait { color: #39AFD7; } diff --git a/src/librustdoc/html/static/themes/dark.css b/src/librustdoc/html/static/themes/dark.css index b3b586ba362fa..b4fae46501e50 100644 --- a/src/librustdoc/html/static/themes/dark.css +++ b/src/librustdoc/html/static/themes/dark.css @@ -136,6 +136,7 @@ pre { .content .stability::before { color: #ccc; } .content span.enum, .content a.enum, .block a.current.enum { color: #82b089; } +.content span.variant, .content a.variant, .block a.current.variant { color: #82a5c9; } .content span.struct, .content a.struct, .block a.current.struct { color: #2dbfb8; } .content span.type, .content a.type, .block a.current.type { color: #ff7f00; } .content span.foreigntype, .content a.foreigntype, .block a.current.foreigntype { color: #dd7de8; } diff --git a/src/librustdoc/html/static/themes/light.css b/src/librustdoc/html/static/themes/light.css index b0c5715604baa..1b69775b60c0d 100644 --- a/src/librustdoc/html/static/themes/light.css +++ b/src/librustdoc/html/static/themes/light.css @@ -137,6 +137,7 @@ pre { .content .stability::before { color: #ccc; } .content span.enum, .content a.enum, .block a.current.enum { color: #508157; } +.content span.variant, .content a.variant, .block a.current.variant { color: #546e8a; } .content span.struct, .content a.struct, .block a.current.struct { color: #ad448e; } .content span.type, .content a.type, .block a.current.type { color: #ba5d00; } .content span.foreigntype, .content a.foreigntype, .block a.current.foreigntype { color: #cd00e2; }