]> git.lizzy.rs Git - rust.git/commitdiff
add anchors links on hover to items from trait impl
authorFrançois Mockers <mockersf@gmail.com>
Thu, 11 Mar 2021 02:32:30 +0000 (03:32 +0100)
committerFrançois Mockers <mockersf@gmail.com>
Tue, 13 Apr 2021 20:10:19 +0000 (22:10 +0200)
src/librustdoc/html/render/mod.rs
src/librustdoc/html/static/rustdoc.css

index a95cfc11367253bbf6333535d444e2231976a122..9f9a3acd8523b3f365d52dd65fb42c50869335d1 100644 (file)
@@ -1453,12 +1453,13 @@ fn doc_impl_item(
             } else {
                 (true, " hidden")
             };
+        let in_trait_class = if trait_.is_some() { " trait-impl" } else { "" };
         match *item.kind {
             clean::MethodItem(..) | clean::TyMethodItem(_) => {
                 // Only render when the method is not static or we allow static methods
                 if render_method_item {
                     let id = cx.derive_id(format!("{}.{}", item_type, name));
-                    write!(w, "<h4 id=\"{}\" class=\"{}{}\">", id, item_type, extra_class);
+                    write!(w, "<h4 id=\"{}\" class=\"{}{}{}\">", id, item_type, extra_class, in_trait_class);
                     w.write_str("<code>");
                     render_assoc_item(w, item, link.anchor(&id), ItemType::Impl, cx);
                     w.write_str("</code>");
@@ -1469,13 +1470,14 @@ fn doc_impl_item(
                         outer_version,
                         outer_const_version,
                     );
+                    write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id);
                     write_srclink(cx, item, w);
                     w.write_str("</h4>");
                 }
             }
             clean::TypedefItem(ref tydef, _) => {
                 let id = cx.derive_id(format!("{}.{}", ItemType::AssocType, name));
-                write!(w, "<h4 id=\"{}\" class=\"{}{}\"><code>", id, item_type, extra_class);
+                write!(w, "<h4 id=\"{}\" class=\"{}{}{}\"><code>", id, item_type, extra_class, in_trait_class);
                 assoc_type(
                     w,
                     item,
@@ -1486,11 +1488,13 @@ fn doc_impl_item(
                     cx.cache(),
                     tcx,
                 );
-                w.write_str("</code></h4>");
+                w.write_str("</code>");
+                write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id);
+                w.write_str("</h4>");
             }
             clean::AssocConstItem(ref ty, ref default) => {
                 let id = cx.derive_id(format!("{}.{}", item_type, name));
-                write!(w, "<h4 id=\"{}\" class=\"{}{}\"><code>", id, item_type, extra_class);
+                write!(w, "<h4 id=\"{}\" class=\"{}{}{}\"><code>", id, item_type, extra_class, in_trait_class);
                 assoc_const(w, item, ty, default.as_ref(), link.anchor(&id), "", cx);
                 w.write_str("</code>");
                 render_stability_since_raw(
@@ -1500,12 +1504,13 @@ fn doc_impl_item(
                     outer_version,
                     outer_const_version,
                 );
+                write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id);
                 write_srclink(cx, item, w);
                 w.write_str("</h4>");
             }
             clean::AssocTypeItem(ref bounds, ref default) => {
                 let id = cx.derive_id(format!("{}.{}", item_type, name));
-                write!(w, "<h4 id=\"{}\" class=\"{}{}\"><code>", id, item_type, extra_class);
+                write!(w, "<h4 id=\"{}\" class=\"{}{}{}\"><code>", id, item_type, extra_class, in_trait_class);
                 assoc_type(
                     w,
                     item,
@@ -1516,7 +1521,9 @@ fn doc_impl_item(
                     cx.cache(),
                     tcx,
                 );
-                w.write_str("</code></h4>");
+                w.write_str("</code>");
+                write!(w, "<a href=\"#{}\" class=\"anchor\"></a>", id);
+                w.write_str("</h4>");
             }
             clean::StrippedItem(..) => return,
             _ => panic!("can't make docs for trait item with name {:?}", item.name),
index 585b7459bd717cde44684c2415aef6fa96d257d3..2f9f8fb7335084f850955d0a277055dc96b624b6 100644 (file)
@@ -133,7 +133,7 @@ h3.impl, h3.method, h4.method, h3.type, h4.type, h4.associatedconstant {
        margin-bottom: 10px;
        position: relative;
 }
-h3.impl, h3.method, h3.type {
+h3.impl, h3.method, h4.method.trait-impl, h3.type, h4.type.trait-impl, h4.associatedconstant.trait-impl {
        padding-left: 15px;
 }
 
@@ -655,7 +655,8 @@ a {
        display: initial;
 }
 
-.in-band:hover > .anchor, .impl:hover > .anchor {
+.in-band:hover > .anchor, .impl:hover > .anchor, .method.trait-impl:hover > .anchor,
+.type.trait-impl:hover > .anchor, .associatedconstant.trait-impl:hover > .anchor {
        display: inline-block;
        position: absolute;
 }