diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 03e2a7139b278..5e8b1194da015 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -339,6 +339,14 @@ impl Item { _ => String::new(), } } + + pub fn stable_since(&self) -> Option<&str> { + if let Some(ref s) = self.stability { + return Some(&s.since[..]); + } + + None + } } #[derive(Clone, RustcEncodable, RustcDecodable, Debug)] diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index dfbe08a0e423d..12a17afcc7c50 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -1913,6 +1913,7 @@ fn item_function(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, generics = f.generics, where_clause = WhereClause(&f.generics), decl = f.decl)); + try!(render_stability_since_raw(w, it.stable_since(), None)); document(w, cx, it) } @@ -1992,7 +1993,7 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, // Trait documentation try!(document(w, cx, it)); - fn trait_item(w: &mut fmt::Formatter, cx: &Context, m: &clean::Item) + fn trait_item(w: &mut fmt::Formatter, cx: &Context, m: &clean::Item, t: &clean::Item) -> fmt::Result { let name = m.name.as_ref().unwrap(); let id = derive_id(format!("{}.{}", shortty(m), name)); @@ -2000,7 +2001,9 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, id = id, stab = m.stability_class())); try!(render_assoc_item(w, m, AssocItemLink::Anchor)); - try!(write!(w, "")); + try!(write!(w, "")); + try!(render_stability_since(w, m, t)); + try!(write!(w, "")); try!(document(w, cx, m)); Ok(()) } @@ -2011,7 +2014,7 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
{name} | ", name = variant.name.as_ref().unwrap())); @@ -2296,12 +2324,14 @@ fn item_enum(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, } _ => () } + try!(write!(w, " | ")); + try!(render_stability_since(w, variant, it)); try!(write!(w, " |
{}
{}
", i.impl_));
+ let since = i.stability.as_ref().map(|s| &s.since[..]);
+ try!(render_stability_since_raw(w, since, outer_version));
+ try!(write!(w, "", id, shortty(item)));
- try!(render_assoc_item(w, item, link));
+ try!(write!(w, "", id, shortty(item)));
+ try!(render_stability_since_raw(w, item.stable_since(), outer_version));
+ try!(write!(w, ""));
+ try!(render_assoc_item(w, item, link));
try!(write!(w, "
\n"));
}
}
@@ -2556,7 +2597,7 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
try!(write!(w, ""));
for trait_item in &i.impl_.items {
- try!(doctraititem(w, cx, trait_item, link, render_header));
+ try!(doctraititem(w, cx, trait_item, link, render_header, outer_version));
}
fn render_default_items(w: &mut fmt::Formatter,
@@ -2564,7 +2605,8 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
did: DefId,
t: &clean::Trait,
i: &clean::Impl,
- render_static: bool) -> fmt::Result {
+ render_static: bool,
+ outer_version: Option<&str>) -> fmt::Result {
for trait_item in &t.items {
let n = trait_item.name.clone();
match i.items.iter().find(|m| { m.name == n }) {
@@ -2572,7 +2614,8 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
None => {}
}
- try!(doctraititem(w, cx, trait_item, AssocItemLink::GotoSource(did), render_static));
+ try!(doctraititem(w, cx, trait_item, AssocItemLink::GotoSource(did), render_static,
+ outer_version));
}
Ok(())
}
@@ -2583,7 +2626,7 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
// for them work.
if let Some(clean::ResolvedPath { did, .. }) = i.impl_.trait_ {
if let Some(t) = cache().traits.get(&did) {
- try!(render_default_items(w, cx, did, t, &i.impl_, render_header));
+ try!(render_default_items(w, cx, did, t, &i.impl_, render_header, outer_version));
}
}
@@ -2675,6 +2718,7 @@ fn item_macro(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
try!(w.write_str(&highlight::highlight(&t.source,
Some("macro"),
None)));
+ try!(render_stability_since_raw(w, it.stable_since(), None));
document(w, cx, it)
}
@@ -2682,7 +2726,7 @@ fn item_primitive(w: &mut fmt::Formatter, cx: &Context,
it: &clean::Item,
_p: &clean::PrimitiveType) -> fmt::Result {
try!(document(w, cx, it));
- render_assoc_items(w, cx, it.def_id, AssocItemRender::All)
+ render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All)
}
fn get_basic_keywords() -> &'static str {
diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css
index c751cdeb6f790..1cadc4e476ac4 100644
--- a/src/librustdoc/html/static/rustdoc.css
+++ b/src/librustdoc/html/static/rustdoc.css
@@ -498,6 +498,21 @@ em.stab p {
opacity: 0.65;
}
+span.since {
+ float: right;
+ font-weight: normal;
+ font-size: initial;
+ color: grey;
+}
+
+.variants_table {
+ width: 100%;
+}
+
+.variants_table tbody tr td:first-child {
+ width: 1%; /* make the variant name as small as possible */
+}
+
td.summary-column {
width: 100%;
}