Skip to content

Commit c603839

Browse files
committed
rustdoc: Only include a stability span if needed.
1 parent bae454e commit c603839

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

src/librustdoc/clean/mod.rs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -327,17 +327,27 @@ impl Item {
327327
}
328328
}
329329

330-
pub fn stability_class(&self) -> String {
331-
self.stability.as_ref().map(|ref s| {
332-
let mut base = match s.level {
333-
stability::Unstable => "unstable".to_string(),
334-
stability::Stable => String::new(),
335-
};
336-
if !s.deprecated_since.is_empty() {
337-
base.push_str(" deprecated");
330+
pub fn stability_class(&self) -> Option<String> {
331+
match self.stability {
332+
Some(ref s) => {
333+
let mut classes = Vec::with_capacity(2);
334+
335+
if s.level == stability::Unstable {
336+
classes.push("unstable");
337+
}
338+
339+
if !s.deprecated_since.is_empty() {
340+
classes.push("deprecated");
341+
}
342+
343+
if classes.len() != 0 {
344+
Some(classes.join(" "))
345+
} else {
346+
None
347+
}
338348
}
339-
base
340-
}).unwrap_or(String::new())
349+
None => None,
350+
}
341351
}
342352

343353
pub fn stable_since(&self) -> Option<&str> {

src/librustdoc/html/render.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,7 +1827,7 @@ fn item_module(w: &mut fmt::Formatter, cx: &Context,
18271827
stab_docs = stab_docs,
18281828
docs = shorter(Some(&Markdown(doc_value).to_string())),
18291829
class = myitem.type_(),
1830-
stab = myitem.stability_class(),
1830+
stab = myitem.stability_class().unwrap_or("".to_string()),
18311831
unsafety_flag = unsafety_flag,
18321832
href = item_path(myitem.type_(), myitem.name.as_ref().unwrap()),
18331833
title = full_path(cx, myitem))?;
@@ -2369,13 +2369,16 @@ fn item_struct(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
23692369
write!(w, "<span id='{id}' class='{item_type}'>
23702370
<span id='{ns_id}' class='invisible'>
23712371
<code>{name}: {ty}</code>
2372-
</span></span><span class='stab {stab}'></span>",
2372+
</span></span>",
23732373
item_type = ItemType::StructField,
23742374
id = id,
23752375
ns_id = ns_id,
2376-
stab = field.stability_class(),
23772376
name = field.name.as_ref().unwrap(),
23782377
ty = ty)?;
2378+
if let Some(stability_class) = field.stability_class() {
2379+
write!(w, "<span class='stab {stab}'></span>",
2380+
stab = stability_class)?;
2381+
}
23792382
document(w, cx, field)?;
23802383
}
23812384
}
@@ -2406,11 +2409,15 @@ fn item_union(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
24062409
write!(w, "<h2 class='fields'>Fields</h2>")?;
24072410
for (field, ty) in fields {
24082411
write!(w, "<span id='{shortty}.{name}' class='{shortty}'><code>{name}: {ty}</code>
2409-
</span><span class='stab {stab}'></span>",
2412+
</span>",
24102413
shortty = ItemType::StructField,
2411-
stab = field.stability_class(),
24122414
name = field.name.as_ref().unwrap(),
24132415
ty = ty)?;
2416+
if let Some(stability_class) = field.stability_class() {
2417+
write!(w, "<span class='stab {stab}'></span>",
2418+
stab = stability_class)?;
2419+
}
2420+
write!(w, "</span>")?;
24142421
document(w, cx, field)?;
24152422
}
24162423
}

0 commit comments

Comments
 (0)