diff options
| author | bors <bors@rust-lang.org> | 2023-07-30 18:11:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-07-30 18:11:08 +0000 |
| commit | a8be6e070f02fca6e5ab851e10e29d45c3a0217c (patch) | |
| tree | 05fe7895492cb8f18f82ad954304da004aed0c53 | |
| parent | 89acdae9f243da15549c7a8bc737e6240c301790 (diff) | |
| parent | 148a0c1673110e36cbec83297facba74b000a6c1 (diff) | |
| download | rust-a8be6e070f02fca6e5ab851e10e29d45c3a0217c.tar.gz rust-a8be6e070f02fca6e5ab851e10e29d45c3a0217c.zip | |
Auto merge of #114204 - GuillaumeGomez:remove-unneeded-clone-calls, r=notriddle
[rustdoc] Remove unneeded `clone()` calls for `derive_id` I realized we were cloning values before passing them to `derive_id` where they are cloned again, which isn't great. Since they'll be cloned anyway, let's allow to pass both by reference and by value. r? `@notriddle`
| -rw-r--r-- | src/librustdoc/html/markdown.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/markdown/tests.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/render/context.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 19 | ||||
| -rw-r--r-- | src/librustdoc/html/render/print_item.rs | 2 |
5 files changed, 11 insertions, 16 deletions
diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index fd00277e213..3fb7122fad3 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -532,8 +532,6 @@ impl<'a, 'b, 'ids, I: Iterator<Item = SpannedEvent<'a>>> Iterator let start_tags = format!( "<h{level} id=\"{id}\">\ <a href=\"#{id}\">", - 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 e05635a0207..db8504d15c7 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<String> = input.iter().map(|s| map.derive(s.to_string())).collect(); + let actual: Vec<String> = 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 037c88cb85d..991edbddc6f 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<S: AsRef<str> + 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 0773d3b81f8..8a6e0b1ed51 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, "<section id=\"{id}\" class=\"{item_type}{in_trait_class}\">"); 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, "<section id=\"{id}\" class=\"{item_type}{in_trait_class}\">"); 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, "<section id=\"{id}\" class=\"{item_type}{in_trait_class}\">"); 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 e363e75f565..cfced799f1e 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: <a href=\"#{id}\">{name}</a>\ </h2>{}", ITEM_TABLE_OPEN, - id = cx.derive_id(my_section.id().to_owned()), + id = cx.derive_id(my_section.id()), name = my_section.name(), ); } |
