Auto merge of #51885 - GuillaumeGomez:trait-impl-show-docs, r=Mark-Simulacrum,QuietMisdreavus
Trait impl show docs Fixes #51834. <img width="1440" alt="screen shot 2018-06-29 at 00 14 33" src="https://user-images.githubusercontent.com/3050060/42063323-6e6e8cc8-7b31-11e8-88ef-4dd2229df76c.png"> (You can see both commit changes in the screenshot 😄) r? @QuietMisdreavus
This commit is contained in:
@@ -806,9 +806,7 @@ unsafe impl<#[may_dangle] T: ?Sized> Drop for Rc<T> {
|
|||||||
///
|
///
|
||||||
/// This will decrement the strong reference count. If the strong reference
|
/// This will decrement the strong reference count. If the strong reference
|
||||||
/// count reaches zero then the only other references (if any) are
|
/// count reaches zero then the only other references (if any) are
|
||||||
/// [`Weak`][weak], so we `drop` the inner value.
|
/// [`Weak`], so we `drop` the inner value.
|
||||||
///
|
|
||||||
/// [weak]: struct.Weak.html
|
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
@@ -1173,9 +1171,8 @@ impl<T: ?Sized + Unsize<U>, U: ?Sized> CoerceUnsized<Weak<U>> for Weak<T> {}
|
|||||||
|
|
||||||
impl<T> Weak<T> {
|
impl<T> Weak<T> {
|
||||||
/// Constructs a new `Weak<T>`, without allocating any memory.
|
/// Constructs a new `Weak<T>`, without allocating any memory.
|
||||||
/// Calling [`upgrade`] on the return value always gives [`None`].
|
/// Calling [`upgrade`][Weak::upgrade] on the return value always gives [`None`].
|
||||||
///
|
///
|
||||||
/// [`upgrade`]: struct.Weak.html#method.upgrade
|
|
||||||
/// [`None`]: ../../std/option/enum.Option.html
|
/// [`None`]: ../../std/option/enum.Option.html
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
@@ -1321,9 +1318,8 @@ impl<T: ?Sized + fmt::Debug> fmt::Debug for Weak<T> {
|
|||||||
#[stable(feature = "downgraded_weak", since = "1.10.0")]
|
#[stable(feature = "downgraded_weak", since = "1.10.0")]
|
||||||
impl<T> Default for Weak<T> {
|
impl<T> Default for Weak<T> {
|
||||||
/// Constructs a new `Weak<T>`, allocating memory for `T` without initializing
|
/// Constructs a new `Weak<T>`, allocating memory for `T` without initializing
|
||||||
/// it. Calling [`upgrade`] on the return value always gives [`None`].
|
/// it. Calling [`upgrade`][Weak::upgrade] on the return value always gives [`None`].
|
||||||
///
|
///
|
||||||
/// [`upgrade`]: struct.Weak.html#method.upgrade
|
|
||||||
/// [`None`]: ../../std/option/enum.Option.html
|
/// [`None`]: ../../std/option/enum.Option.html
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
|||||||
@@ -1927,9 +1927,7 @@ impl<'a> Add<&'a str> for String {
|
|||||||
|
|
||||||
/// Implements the `+=` operator for appending to a `String`.
|
/// Implements the `+=` operator for appending to a `String`.
|
||||||
///
|
///
|
||||||
/// This has the same behavior as the [`push_str`] method.
|
/// This has the same behavior as the [`push_str`][String::push_str] method.
|
||||||
///
|
|
||||||
/// [`push_str`]: struct.String.html#method.push_str
|
|
||||||
#[stable(feature = "stringaddassign", since = "1.12.0")]
|
#[stable(feature = "stringaddassign", since = "1.12.0")]
|
||||||
impl<'a> AddAssign<&'a str> for String {
|
impl<'a> AddAssign<&'a str> for String {
|
||||||
#[inline]
|
#[inline]
|
||||||
|
|||||||
@@ -916,9 +916,7 @@ unsafe impl<#[may_dangle] T: ?Sized> Drop for Arc<T> {
|
|||||||
///
|
///
|
||||||
/// This will decrement the strong reference count. If the strong reference
|
/// This will decrement the strong reference count. If the strong reference
|
||||||
/// count reaches zero then the only other references (if any) are
|
/// count reaches zero then the only other references (if any) are
|
||||||
/// [`Weak`][weak], so we `drop` the inner value.
|
/// [`Weak`], so we `drop` the inner value.
|
||||||
///
|
|
||||||
/// [weak]: struct.Weak.html
|
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
@@ -1159,9 +1157,9 @@ impl<T: ?Sized> Clone for Weak<T> {
|
|||||||
#[stable(feature = "downgraded_weak", since = "1.10.0")]
|
#[stable(feature = "downgraded_weak", since = "1.10.0")]
|
||||||
impl<T> Default for Weak<T> {
|
impl<T> Default for Weak<T> {
|
||||||
/// Constructs a new `Weak<T>`, without allocating memory.
|
/// Constructs a new `Weak<T>`, without allocating memory.
|
||||||
/// Calling [`upgrade`] on the return value always gives [`None`].
|
/// Calling [`upgrade`][Weak::upgrade] on the return value always
|
||||||
|
/// gives [`None`].
|
||||||
///
|
///
|
||||||
/// [`upgrade`]: struct.Weak.html#method.upgrade
|
|
||||||
/// [`None`]: ../../std/option/enum.Option.html#variant.None
|
/// [`None`]: ../../std/option/enum.Option.html#variant.None
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
|||||||
@@ -1006,9 +1006,7 @@ fn expect_failed(msg: &str) -> ! {
|
|||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl<T> Default for Option<T> {
|
impl<T> Default for Option<T> {
|
||||||
/// Returns [`None`].
|
/// Returns [`None`][Option::None].
|
||||||
///
|
|
||||||
/// [`None`]: #variant.None
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn default() -> Option<T> { None }
|
fn default() -> Option<T> { None }
|
||||||
}
|
}
|
||||||
@@ -1228,9 +1226,10 @@ unsafe impl<A> TrustedLen for IntoIter<A> {}
|
|||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl<A, V: FromIterator<A>> FromIterator<Option<A>> for Option<V> {
|
impl<A, V: FromIterator<A>> FromIterator<Option<A>> for Option<V> {
|
||||||
/// Takes each element in the [`Iterator`]: if it is [`None`], no further
|
/// Takes each element in the [`Iterator`]: if it is [`None`][Option::None],
|
||||||
/// elements are taken, and the [`None`] is returned. Should no [`None`] occur, a
|
/// no further elements are taken, and the [`None`][Option::None] is
|
||||||
/// container with the values of each `Option` is returned.
|
/// returned. Should no [`None`][Option::None] occur, a container with the
|
||||||
|
/// values of each [`Option`] is returned.
|
||||||
///
|
///
|
||||||
/// Here is an example which increments every integer in a vector,
|
/// Here is an example which increments every integer in a vector,
|
||||||
/// checking for overflow:
|
/// checking for overflow:
|
||||||
@@ -1247,7 +1246,6 @@ impl<A, V: FromIterator<A>> FromIterator<Option<A>> for Option<V> {
|
|||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// [`Iterator`]: ../iter/trait.Iterator.html
|
/// [`Iterator`]: ../iter/trait.Iterator.html
|
||||||
/// [`None`]: enum.Option.html#variant.None
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn from_iter<I: IntoIterator<Item=Option<A>>>(iter: I) -> Option<V> {
|
fn from_iter<I: IntoIterator<Item=Option<A>>>(iter: I) -> Option<V> {
|
||||||
// FIXME(#11084): This could be replaced with Iterator::scan when this
|
// FIXME(#11084): This could be replaced with Iterator::scan when this
|
||||||
|
|||||||
@@ -507,7 +507,7 @@ impl<T, E> Result<T, E> {
|
|||||||
|
|
||||||
/// Returns an iterator over the possibly contained value.
|
/// Returns an iterator over the possibly contained value.
|
||||||
///
|
///
|
||||||
/// The iterator yields one value if the result is [`Ok`], otherwise none.
|
/// The iterator yields one value if the result is [`Result::Ok`], otherwise none.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
@@ -520,8 +520,6 @@ impl<T, E> Result<T, E> {
|
|||||||
/// let x: Result<u32, &str> = Err("nothing!");
|
/// let x: Result<u32, &str> = Err("nothing!");
|
||||||
/// assert_eq!(x.iter().next(), None);
|
/// assert_eq!(x.iter().next(), None);
|
||||||
/// ```
|
/// ```
|
||||||
///
|
|
||||||
/// [`Ok`]: enum.Result.html#variant.Ok
|
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn iter(&self) -> Iter<T> {
|
pub fn iter(&self) -> Iter<T> {
|
||||||
@@ -530,7 +528,7 @@ impl<T, E> Result<T, E> {
|
|||||||
|
|
||||||
/// Returns a mutable iterator over the possibly contained value.
|
/// Returns a mutable iterator over the possibly contained value.
|
||||||
///
|
///
|
||||||
/// The iterator yields one value if the result is [`Ok`], otherwise none.
|
/// The iterator yields one value if the result is [`Result::Ok`], otherwise none.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
@@ -547,8 +545,6 @@ impl<T, E> Result<T, E> {
|
|||||||
/// let mut x: Result<u32, &str> = Err("nothing!");
|
/// let mut x: Result<u32, &str> = Err("nothing!");
|
||||||
/// assert_eq!(x.iter_mut().next(), None);
|
/// assert_eq!(x.iter_mut().next(), None);
|
||||||
/// ```
|
/// ```
|
||||||
///
|
|
||||||
/// [`Ok`]: enum.Result.html#variant.Ok
|
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn iter_mut(&mut self) -> IterMut<T> {
|
pub fn iter_mut(&mut self) -> IterMut<T> {
|
||||||
@@ -994,7 +990,7 @@ impl<T, E> IntoIterator for Result<T, E> {
|
|||||||
|
|
||||||
/// Returns a consuming iterator over the possibly contained value.
|
/// Returns a consuming iterator over the possibly contained value.
|
||||||
///
|
///
|
||||||
/// The iterator yields one value if the result is [`Ok`], otherwise none.
|
/// The iterator yields one value if the result is [`Result::Ok`], otherwise none.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
@@ -1009,8 +1005,6 @@ impl<T, E> IntoIterator for Result<T, E> {
|
|||||||
/// let v: Vec<u32> = x.into_iter().collect();
|
/// let v: Vec<u32> = x.into_iter().collect();
|
||||||
/// assert_eq!(v, []);
|
/// assert_eq!(v, []);
|
||||||
/// ```
|
/// ```
|
||||||
///
|
|
||||||
/// [`Ok`]: enum.Result.html#variant.Ok
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn into_iter(self) -> IntoIter<T> {
|
fn into_iter(self) -> IntoIter<T> {
|
||||||
IntoIter { inner: self.ok() }
|
IntoIter { inner: self.ok() }
|
||||||
|
|||||||
@@ -2678,7 +2678,6 @@ fn item_function(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item,
|
|||||||
|
|
||||||
fn render_implementor(cx: &Context, implementor: &Impl, w: &mut fmt::Formatter,
|
fn render_implementor(cx: &Context, implementor: &Impl, w: &mut fmt::Formatter,
|
||||||
implementor_dups: &FxHashMap<&str, (DefId, bool)>) -> fmt::Result {
|
implementor_dups: &FxHashMap<&str, (DefId, bool)>) -> fmt::Result {
|
||||||
write!(w, "<li><table class='table-display'><tbody><tr><td><code>")?;
|
|
||||||
// If there's already another implementor that has the same abbridged name, use the
|
// If there's already another implementor that has the same abbridged name, use the
|
||||||
// full path, for example in `std::iter::ExactSizeIterator`
|
// full path, for example in `std::iter::ExactSizeIterator`
|
||||||
let use_absolute = match implementor.inner_impl().for_ {
|
let use_absolute = match implementor.inner_impl().for_ {
|
||||||
@@ -2689,22 +2688,8 @@ fn render_implementor(cx: &Context, implementor: &Impl, w: &mut fmt::Formatter,
|
|||||||
} => implementor_dups[path.last_name()].1,
|
} => implementor_dups[path.last_name()].1,
|
||||||
_ => false,
|
_ => false,
|
||||||
};
|
};
|
||||||
fmt_impl_for_trait_page(&implementor.inner_impl(), w, use_absolute)?;
|
render_impl(w, cx, implementor, AssocItemLink::Anchor(None), RenderMode::Normal,
|
||||||
for it in &implementor.inner_impl().items {
|
implementor.impl_item.stable_since(), false, Some(use_absolute))?;
|
||||||
if let clean::TypedefItem(ref tydef, _) = it.inner {
|
|
||||||
write!(w, "<span class=\"where fmt-newline\"> ")?;
|
|
||||||
assoc_type(w, it, &[], Some(&tydef.type_), AssocItemLink::Anchor(None))?;
|
|
||||||
write!(w, ";</span>")?;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
write!(w, "</code><td>")?;
|
|
||||||
if let Some(l) = (Item { cx, item: &implementor.impl_item }).src_href() {
|
|
||||||
write!(w, "<div class='out-of-band'>")?;
|
|
||||||
write!(w, "<a class='srclink' href='{}' title='{}'>[src]</a>",
|
|
||||||
l, "goto source code")?;
|
|
||||||
write!(w, "</div>")?;
|
|
||||||
}
|
|
||||||
writeln!(w, "</td></tr></tbody></table></li>")?;
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2715,7 +2700,7 @@ fn render_impls(cx: &Context, w: &mut fmt::Formatter,
|
|||||||
let did = i.trait_did().unwrap();
|
let did = i.trait_did().unwrap();
|
||||||
let assoc_link = AssocItemLink::GotoSource(did, &i.inner_impl().provided_trait_methods);
|
let assoc_link = AssocItemLink::GotoSource(did, &i.inner_impl().provided_trait_methods);
|
||||||
render_impl(w, cx, i, assoc_link,
|
render_impl(w, cx, i, assoc_link,
|
||||||
RenderMode::Normal, containing_item.stable_since(), true)?;
|
RenderMode::Normal, containing_item.stable_since(), true, None)?;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -2907,14 +2892,14 @@ fn item_trait(
|
|||||||
<h2 id='implementors' class='small-section-header'>\
|
<h2 id='implementors' class='small-section-header'>\
|
||||||
Implementors<a href='#implementors' class='anchor'></a>\
|
Implementors<a href='#implementors' class='anchor'></a>\
|
||||||
</h2>\
|
</h2>\
|
||||||
<ul class='item-list' id='implementors-list'>\
|
<div class='item-list' id='implementors-list'>\
|
||||||
";
|
";
|
||||||
|
|
||||||
let synthetic_impl_header = "\
|
let synthetic_impl_header = "\
|
||||||
<h2 id='synthetic-implementors' class='small-section-header'>\
|
<h2 id='synthetic-implementors' class='small-section-header'>\
|
||||||
Auto implementors<a href='#synthetic-implementors' class='anchor'></a>\
|
Auto implementors<a href='#synthetic-implementors' class='anchor'></a>\
|
||||||
</h2>\
|
</h2>\
|
||||||
<ul class='item-list' id='synthetic-implementors-list'>\
|
<div class='item-list' id='synthetic-implementors-list'>\
|
||||||
";
|
";
|
||||||
|
|
||||||
let mut synthetic_types = Vec::new();
|
let mut synthetic_types = Vec::new();
|
||||||
@@ -2964,7 +2949,8 @@ fn item_trait(
|
|||||||
&implementor.inner_impl().provided_trait_methods
|
&implementor.inner_impl().provided_trait_methods
|
||||||
);
|
);
|
||||||
render_impl(w, cx, &implementor, assoc_link,
|
render_impl(w, cx, &implementor, assoc_link,
|
||||||
RenderMode::Normal, implementor.impl_item.stable_since(), false)?;
|
RenderMode::Normal, implementor.impl_item.stable_since(), false,
|
||||||
|
None)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2973,7 +2959,7 @@ fn item_trait(
|
|||||||
for implementor in concrete {
|
for implementor in concrete {
|
||||||
render_implementor(cx, implementor, w, &implementor_dups)?;
|
render_implementor(cx, implementor, w, &implementor_dups)?;
|
||||||
}
|
}
|
||||||
write!(w, "</ul>")?;
|
write!(w, "</div>")?;
|
||||||
|
|
||||||
if t.auto {
|
if t.auto {
|
||||||
write!(w, "{}", synthetic_impl_header)?;
|
write!(w, "{}", synthetic_impl_header)?;
|
||||||
@@ -2983,17 +2969,17 @@ fn item_trait(
|
|||||||
);
|
);
|
||||||
render_implementor(cx, implementor, w, &implementor_dups)?;
|
render_implementor(cx, implementor, w, &implementor_dups)?;
|
||||||
}
|
}
|
||||||
write!(w, "</ul>")?;
|
write!(w, "</div>")?;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// even without any implementations to write in, we still want the heading and list, so the
|
// even without any implementations to write in, we still want the heading and list, so the
|
||||||
// implementors javascript file pulled in below has somewhere to write the impls into
|
// implementors javascript file pulled in below has somewhere to write the impls into
|
||||||
write!(w, "{}", impl_header)?;
|
write!(w, "{}", impl_header)?;
|
||||||
write!(w, "</ul>")?;
|
write!(w, "</div>")?;
|
||||||
|
|
||||||
if t.auto {
|
if t.auto {
|
||||||
write!(w, "{}", synthetic_impl_header)?;
|
write!(w, "{}", synthetic_impl_header)?;
|
||||||
write!(w, "</ul>")?;
|
write!(w, "</div>")?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
write!(w, r#"<script type="text/javascript">window.inlined_types=new Set({});</script>"#,
|
write!(w, r#"<script type="text/javascript">window.inlined_types=new Set({});</script>"#,
|
||||||
@@ -3616,7 +3602,7 @@ fn render_assoc_items(w: &mut fmt::Formatter,
|
|||||||
};
|
};
|
||||||
for i in &non_trait {
|
for i in &non_trait {
|
||||||
render_impl(w, cx, i, AssocItemLink::Anchor(None), render_mode,
|
render_impl(w, cx, i, AssocItemLink::Anchor(None), render_mode,
|
||||||
containing_item.stable_since(), true)?;
|
containing_item.stable_since(), true, None)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let AssocItemRender::DerefFor { .. } = what {
|
if let AssocItemRender::DerefFor { .. } = what {
|
||||||
@@ -3797,15 +3783,32 @@ fn spotlight_decl(decl: &clean::FnDecl) -> Result<String, fmt::Error> {
|
|||||||
|
|
||||||
fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLink,
|
fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLink,
|
||||||
render_mode: RenderMode, outer_version: Option<&str>,
|
render_mode: RenderMode, outer_version: Option<&str>,
|
||||||
show_def_docs: bool) -> fmt::Result {
|
show_def_docs: bool, use_absolute: Option<bool>) -> fmt::Result {
|
||||||
if render_mode == RenderMode::Normal {
|
if render_mode == RenderMode::Normal {
|
||||||
let id = cx.derive_id(match i.inner_impl().trait_ {
|
let id = cx.derive_id(match i.inner_impl().trait_ {
|
||||||
Some(ref t) => format!("impl-{}", small_url_encode(&format!("{:#}", t))),
|
Some(ref t) => format!("impl-{}", small_url_encode(&format!("{:#}", t))),
|
||||||
None => "impl".to_string(),
|
None => "impl".to_string(),
|
||||||
});
|
});
|
||||||
|
if let Some(use_absolute) = use_absolute {
|
||||||
|
write!(w, "<h3 id='{}' class='impl'><span class='in-band'><table class='table-display'>\
|
||||||
|
<tbody><tr><td><code>", id)?;
|
||||||
|
fmt_impl_for_trait_page(&i.inner_impl(), w, use_absolute)?;
|
||||||
|
if show_def_docs {
|
||||||
|
for it in &i.inner_impl().items {
|
||||||
|
if let clean::TypedefItem(ref tydef, _) = it.inner {
|
||||||
|
write!(w, "<span class=\"where fmt-newline\"> ")?;
|
||||||
|
assoc_type(w, it, &vec![], Some(&tydef.type_),
|
||||||
|
AssocItemLink::Anchor(None))?;
|
||||||
|
write!(w, ";</span>")?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
write!(w, "</code>")?;
|
||||||
|
} else {
|
||||||
write!(w, "<h3 id='{}' class='impl'><span class='in-band'><table class='table-display'>\
|
write!(w, "<h3 id='{}' class='impl'><span class='in-band'><table class='table-display'>\
|
||||||
<tbody><tr><td><code>{}</code>",
|
<tbody><tr><td><code>{}</code>",
|
||||||
id, i.inner_impl())?;
|
id, i.inner_impl())?;
|
||||||
|
}
|
||||||
write!(w, "<a href='#{}' class='anchor'></a>", id)?;
|
write!(w, "<a href='#{}' class='anchor'></a>", id)?;
|
||||||
write!(w, "</span></td><td><span class='out-of-band'>")?;
|
write!(w, "</span></td><td><span class='out-of-band'>")?;
|
||||||
let since = i.impl_item.stability.as_ref().map(|s| &s.since[..]);
|
let since = i.impl_item.stability.as_ref().map(|s| &s.since[..]);
|
||||||
@@ -3929,10 +3932,6 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
|
|||||||
let traits = &cache().traits;
|
let traits = &cache().traits;
|
||||||
let trait_ = i.trait_did().map(|did| &traits[&did]);
|
let trait_ = i.trait_did().map(|did| &traits[&did]);
|
||||||
|
|
||||||
if !show_def_docs {
|
|
||||||
write!(w, "<span class='docblock autohide'>")?;
|
|
||||||
}
|
|
||||||
|
|
||||||
write!(w, "<div class='impl-items'>")?;
|
write!(w, "<div class='impl-items'>")?;
|
||||||
for trait_item in &i.inner_impl().items {
|
for trait_item in &i.inner_impl().items {
|
||||||
doc_impl_item(w, cx, trait_item, link, render_mode,
|
doc_impl_item(w, cx, trait_item, link, render_mode,
|
||||||
@@ -3968,10 +3967,6 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi
|
|||||||
}
|
}
|
||||||
write!(w, "</div>")?;
|
write!(w, "</div>")?;
|
||||||
|
|
||||||
if !show_def_docs {
|
|
||||||
write!(w, "</span>")?;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1791,9 +1791,12 @@
|
|||||||
x[k].setAttribute('href', rootPath + href);
|
x[k].setAttribute('href', rootPath + href);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var li = document.createElement('li');
|
var display = document.createElement('h3');
|
||||||
li.appendChild(code);
|
addClass(display, "impl");
|
||||||
list.appendChild(li);
|
display.innerHTML = '<span class="in-band"><table class="table-display"><tbody>\
|
||||||
|
<tr><td><code>' + code.outerHTML + '</code></td><td></td></tr></tbody></table>\
|
||||||
|
</span>';
|
||||||
|
list.appendChild(display);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ h3.impl, h3.method, h3.type {
|
|||||||
|
|
||||||
h1, h2, h3, h4,
|
h1, h2, h3, h4,
|
||||||
.sidebar, a.source, .search-input, .content table :not(code)>a,
|
.sidebar, a.source, .search-input, .content table :not(code)>a,
|
||||||
.collapse-toggle, ul.item-list > li > .out-of-band {
|
.collapse-toggle, div.item-list .out-of-band {
|
||||||
font-family: "Fira Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
font-family: "Fira Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -367,10 +367,6 @@ h4.method > .out-of-band {
|
|||||||
font-size: 19px;
|
font-size: 19px;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul.item-list > li > .out-of-band {
|
|
||||||
font-size: 19px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 > code, h3 > code, .invisible > code {
|
h4 > code, h3 > code, .invisible > code {
|
||||||
max-width: calc(100% - 41px);
|
max-width: calc(100% - 41px);
|
||||||
display: block;
|
display: block;
|
||||||
@@ -436,10 +432,6 @@ h4 > code, h3 > code, .invisible > code {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content .item-list li {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .multi-column {
|
.content .multi-column {
|
||||||
-moz-column-count: 5;
|
-moz-column-count: 5;
|
||||||
-moz-column-gap: 2.5em;
|
-moz-column-gap: 2.5em;
|
||||||
@@ -473,6 +465,11 @@ h4 > code, h3 > code, .invisible > code {
|
|||||||
.content .impl-items .docblock, .content .impl-items .stability {
|
.content .impl-items .docblock, .content .impl-items .stability {
|
||||||
margin-bottom: .6em;
|
margin-bottom: .6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.content .impl-items > .stability {
|
||||||
|
margin-left: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
.content .docblock > .impl-items {
|
.content .docblock > .impl-items {
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
margin-top: -34px;
|
margin-top: -34px;
|
||||||
@@ -1363,6 +1360,15 @@ kbd {
|
|||||||
font-size: 19px;
|
font-size: 19px;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
#implementors-list > .impl-items .table-display .out-of-band {
|
||||||
|
font-size: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-display td:hover .anchor {
|
||||||
|
display: block;
|
||||||
|
top: 2px;
|
||||||
|
left: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
#main > ul {
|
#main > ul {
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
|
|||||||
@@ -2655,9 +2655,8 @@ impl DefaultHasher {
|
|||||||
|
|
||||||
#[stable(feature = "hashmap_default_hasher", since = "1.13.0")]
|
#[stable(feature = "hashmap_default_hasher", since = "1.13.0")]
|
||||||
impl Default for DefaultHasher {
|
impl Default for DefaultHasher {
|
||||||
/// Creates a new `DefaultHasher` using [`new`]. See its documentation for more.
|
/// Creates a new `DefaultHasher` using [`new`][DefaultHasher::new].
|
||||||
///
|
/// See its documentation for more.
|
||||||
/// [`new`]: #method.new
|
|
||||||
fn default() -> DefaultHasher {
|
fn default() -> DefaultHasher {
|
||||||
DefaultHasher::new()
|
DefaultHasher::new()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -351,9 +351,6 @@ impl From<String> for OsString {
|
|||||||
/// Converts a [`String`] into a [`OsString`].
|
/// Converts a [`String`] into a [`OsString`].
|
||||||
///
|
///
|
||||||
/// The conversion copies the data, and includes an allocation on the heap.
|
/// The conversion copies the data, and includes an allocation on the heap.
|
||||||
///
|
|
||||||
/// [`String`]: ../string/struct.String.html
|
|
||||||
/// [`OsString`]: struct.OsString.html
|
|
||||||
fn from(s: String) -> OsString {
|
fn from(s: String) -> OsString {
|
||||||
OsString { inner: Buf::from_string(s) }
|
OsString { inner: Buf::from_string(s) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,17 +294,15 @@ impl<R: Seek> Seek for BufReader<R> {
|
|||||||
/// `.into_inner()` immediately after a seek yields the underlying reader
|
/// `.into_inner()` immediately after a seek yields the underlying reader
|
||||||
/// at the same position.
|
/// at the same position.
|
||||||
///
|
///
|
||||||
/// To seek without discarding the internal buffer, use [`seek_relative`].
|
/// To seek without discarding the internal buffer, use [`Seek::seek_relative`].
|
||||||
///
|
///
|
||||||
/// See `std::io::Seek` for more details.
|
/// See [`std::io::Seek`] for more details.
|
||||||
///
|
///
|
||||||
/// Note: In the edge case where you're seeking with `SeekFrom::Current(n)`
|
/// Note: In the edge case where you're seeking with `SeekFrom::Current(n)`
|
||||||
/// where `n` minus the internal buffer length overflows an `i64`, two
|
/// where `n` minus the internal buffer length overflows an `i64`, two
|
||||||
/// seeks will be performed instead of one. If the second seek returns
|
/// seeks will be performed instead of one. If the second seek returns
|
||||||
/// `Err`, the underlying reader will be left at the same position it would
|
/// `Err`, the underlying reader will be left at the same position it would
|
||||||
/// have if you called `seek` with `SeekFrom::Current(0)`.
|
/// have if you called `seek` with `SeekFrom::Current(0)`.
|
||||||
///
|
|
||||||
/// [`seek_relative`]: #method.seek_relative
|
|
||||||
fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> {
|
fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> {
|
||||||
let result: u64;
|
let result: u64;
|
||||||
if let SeekFrom::Current(n) = pos {
|
if let SeekFrom::Current(n) = pos {
|
||||||
|
|||||||
@@ -386,8 +386,6 @@ unsafe impl<#[may_dangle] T: ?Sized> Drop for Mutex<T> {
|
|||||||
impl<T> From<T> for Mutex<T> {
|
impl<T> From<T> for Mutex<T> {
|
||||||
/// Creates a new mutex in an unlocked state ready for use.
|
/// Creates a new mutex in an unlocked state ready for use.
|
||||||
/// This is equivalent to [`Mutex::new`].
|
/// This is equivalent to [`Mutex::new`].
|
||||||
///
|
|
||||||
/// [`Mutex::new`]: #method.new
|
|
||||||
fn from(t: T) -> Self {
|
fn from(t: T) -> Self {
|
||||||
Mutex::new(t)
|
Mutex::new(t)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -461,8 +461,6 @@ impl<T: Default> Default for RwLock<T> {
|
|||||||
impl<T> From<T> for RwLock<T> {
|
impl<T> From<T> for RwLock<T> {
|
||||||
/// Creates a new instance of an `RwLock<T>` which is unlocked.
|
/// Creates a new instance of an `RwLock<T>` which is unlocked.
|
||||||
/// This is equivalent to [`RwLock::new`].
|
/// This is equivalent to [`RwLock::new`].
|
||||||
///
|
|
||||||
/// [`RwLock::new`]: #method.new
|
|
||||||
fn from(t: T) -> Self {
|
fn from(t: T) -> Self {
|
||||||
RwLock::new(t)
|
RwLock::new(t)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ pub mod unix_only {
|
|||||||
// @has doc_cfg/unix_only/trait.ArmOnly.html \
|
// @has doc_cfg/unix_only/trait.ArmOnly.html \
|
||||||
// '//*[@id="main"]/*[@class="stability"]/*[@class="stab portability"]' \
|
// '//*[@id="main"]/*[@class="stability"]/*[@class="stab portability"]' \
|
||||||
// 'This is supported on Unix and ARM only.'
|
// 'This is supported on Unix and ARM only.'
|
||||||
// @count - '//*[@class="stab portability"]' 2
|
// @count - '//*[@class="stab portability"]' 3
|
||||||
#[doc(cfg(target_arch = "arm"))]
|
#[doc(cfg(target_arch = "arm"))]
|
||||||
pub trait ArmOnly {
|
pub trait ArmOnly {
|
||||||
fn unix_and_arm_only_function();
|
fn unix_and_arm_only_function();
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
// ignore-tidy-linelength
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
// @has issue_29503/trait.MyTrait.html
|
// @has issue_29503/trait.MyTrait.html
|
||||||
@@ -15,7 +17,7 @@ pub trait MyTrait {
|
|||||||
fn my_string(&self) -> String;
|
fn my_string(&self) -> String;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @has - "//ul[@id='implementors-list']/li" "impl<T> MyTrait for T where T: Debug"
|
// @has - "//div[@id='implementors-list']/h3[@id='impl-MyTrait']//code" "impl<T> MyTrait for T where T: Debug"
|
||||||
impl<T> MyTrait for T where T: fmt::Debug {
|
impl<T> MyTrait for T where T: fmt::Debug {
|
||||||
fn my_string(&self) -> String {
|
fn my_string(&self) -> String {
|
||||||
format!("{:?}", self)
|
format!("{:?}", self)
|
||||||
|
|||||||
Reference in New Issue
Block a user