diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs
index fd00277e2137d..3fb7122fad35c 100644
--- a/src/librustdoc/html/markdown.rs
+++ b/src/librustdoc/html/markdown.rs
@@ -532,8 +532,6 @@ impl<'a, 'b, 'ids, I: Iterator- >> Iterator
let start_tags = format!(
"\
",
- id = id,
- level = level
);
return Some((Event::Html(start_tags.into()), 0..0));
}
diff --git a/src/librustdoc/html/markdown/tests.rs b/src/librustdoc/html/markdown/tests.rs
index e05635a020756..db8504d15c753 100644
--- a/src/librustdoc/html/markdown/tests.rs
+++ b/src/librustdoc/html/markdown/tests.rs
@@ -38,7 +38,7 @@ fn test_unique_id() {
];
let mut map = IdMap::new();
- let actual: Vec = input.iter().map(|s| map.derive(s.to_string())).collect();
+ let actual: Vec = input.iter().map(|s| map.derive(s)).collect();
assert_eq!(&actual[..], expected);
}
diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs
index 037c88cb85d7e..991edbddc6f45 100644
--- a/src/librustdoc/html/render/context.rs
+++ b/src/librustdoc/html/render/context.rs
@@ -162,7 +162,7 @@ impl<'tcx> Context<'tcx> {
self.shared.tcx.sess
}
- pub(super) fn derive_id(&mut self, id: String) -> String {
+ pub(super) fn derive_id + ToString>(&mut self, id: S) -> String {
self.id_map.derive(id)
}
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs
index 0773d3b81f8c3..8a6e0b1ed51f1 100644
--- a/src/librustdoc/html/render/mod.rs
+++ b/src/librustdoc/html/render/mod.rs
@@ -1153,9 +1153,7 @@ fn render_assoc_items_inner(
AssocItemRender::DerefFor { trait_, type_, deref_mut_ } => {
let id =
cx.derive_id(small_url_encode(format!("deref-methods-{:#}", type_.print(cx))));
- if let Some(def_id) = type_.def_id(cx.cache()) {
- cx.deref_id_map.insert(def_id, id.clone());
- }
+ let derived_id = cx.derive_id(&id);
write_impl_section_heading(
&mut tmp_buf,
&format!(
@@ -1165,11 +1163,10 @@ fn render_assoc_items_inner(
),
&id,
);
- (
- RenderMode::ForDeref { mut_: deref_mut_ },
- cx.derive_id(id),
- r#" class="impl-items""#,
- )
+ if let Some(def_id) = type_.def_id(cx.cache()) {
+ cx.deref_id_map.insert(def_id, id);
+ }
+ (RenderMode::ForDeref { mut_: deref_mut_ }, derived_id, r#" class="impl-items""#)
}
};
let mut impls_buf = Buffer::html();
@@ -1579,7 +1576,7 @@ fn render_impl(
kind @ (clean::TyAssocConstItem(generics, ty)
| clean::AssocConstItem(generics, ty, _)) => {
let source_id = format!("{item_type}.{name}");
- let id = cx.derive_id(source_id.clone());
+ let id = cx.derive_id(&source_id);
write!(w, "");
render_rightside(w, cx, item, containing_item, render_mode);
if trait_.is_some() {
@@ -1605,7 +1602,7 @@ fn render_impl(
}
clean::TyAssocTypeItem(generics, bounds) => {
let source_id = format!("{item_type}.{name}");
- let id = cx.derive_id(source_id.clone());
+ let id = cx.derive_id(&source_id);
write!(w, "");
if trait_.is_some() {
// Anchors are only used on trait impls.
@@ -1626,7 +1623,7 @@ fn render_impl(
}
clean::AssocTypeItem(tydef, _bounds) => {
let source_id = format!("{item_type}.{name}");
- let id = cx.derive_id(source_id.clone());
+ let id = cx.derive_id(&source_id);
write!(w, "");
if trait_.is_some() {
// Anchors are only used on trait impls.
diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs
index e363e75f56561..cfced799f1ec6 100644
--- a/src/librustdoc/html/render/print_item.rs
+++ b/src/librustdoc/html/render/print_item.rs
@@ -433,7 +433,7 @@ fn item_module(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Item, items:
{name}\
{}",
ITEM_TABLE_OPEN,
- id = cx.derive_id(my_section.id().to_owned()),
+ id = cx.derive_id(my_section.id()),
name = my_section.name(),
);
}