diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 99ddbcd7170..5d86f056611 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -19,23 +19,25 @@ use crate::html::item_type::ItemType;
use crate::html::render::{self, cache, CURRENT_DEPTH};
pub trait Print {
- fn print(&self, buffer: &mut Buffer);
+ fn print(self, buffer: &mut Buffer);
}
-impl Print for &'_ T {
- fn print(&self, buffer: &mut Buffer) {
- (&**self).print(buffer)
+impl Print for F
+ where F: FnOnce(&mut Buffer),
+{
+ fn print(self, buffer: &mut Buffer) {
+ (self)(buffer)
}
}
impl Print for String {
- fn print(&self, buffer: &mut Buffer) {
- buffer.write_str(self);
+ fn print(self, buffer: &mut Buffer) {
+ buffer.write_str(&self);
}
}
-impl Print for str {
- fn print(&self, buffer: &mut Buffer) {
+impl Print for &'_ str {
+ fn print(self, buffer: &mut Buffer) {
buffer.write_str(self);
}
}
@@ -92,7 +94,7 @@ impl Buffer {
self.buffer.write_fmt(v).unwrap();
}
- crate fn to_display(mut self, t: &T) -> String {
+ crate fn to_display(mut self, t: T) -> String {
t.print(&mut self);
self.into_inner()
}
diff --git a/src/librustdoc/html/layout.rs b/src/librustdoc/html/layout.rs
index 38dcfbfcec4..1202f411f91 100644
--- a/src/librustdoc/html/layout.rs
+++ b/src/librustdoc/html/layout.rs
@@ -34,7 +34,7 @@ pub struct Page<'a> {
pub fn render(
layout: &Layout,
page: &Page<'_>,
- sidebar: &S,
+ sidebar: S,
t: &T,
themes: &[PathBuf],
) -> String {
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index 40e7081c57c..fc7038f8bda 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -1174,7 +1174,7 @@ themePicker.onblur = handleThemeButtonsBlur;
})
.collect::());
let v = layout::render(&cx.shared.layout,
- &page, &(""), &content,
+ &page, "", &content,
&cx.shared.themes);
cx.shared.fs.write(&dst, v.as_bytes())?;
}
@@ -1921,7 +1921,7 @@ impl Context {
String::new()
};
let v = layout::render(&self.shared.layout,
- &page, &sidebar, &all,
+ &page, sidebar, &all,
&self.shared.themes);
self.shared.fs.write(&final_file, v.as_bytes())?;
@@ -1937,7 +1937,7 @@ impl Context {
themes.push(PathBuf::from("settings.css"));
let v = layout::render(
&self.shared.layout,
- &page, &sidebar, &settings,
+ &page, sidebar, &settings,
&themes);
self.shared.fs.write(&settings_file, v.as_bytes())?;
@@ -1994,7 +1994,7 @@ impl Context {
if !self.render_redirect_pages {
layout::render(&self.shared.layout, &page,
- &Sidebar{ cx: self, item: it },
+ Sidebar{ cx: self, item: it },
&Item{ cx: self, item: it },
&self.shared.themes)
} else {
@@ -4267,7 +4267,7 @@ fn item_foreign_type(w: &mut fmt::Formatter<'_>, cx: &Context, it: &clean::Item)
}
impl Print for Sidebar<'_> {
- fn print(&self, buffer: &mut Buffer) {
+ fn print(self, buffer: &mut Buffer) {
let cx = self.cx;
let it = self.item;
let parentlen = cx.current.len() - if it.is_mod() {1} else {0};
diff --git a/src/librustdoc/html/sources.rs b/src/librustdoc/html/sources.rs
index 018db3f9363..94ae1422609 100644
--- a/src/librustdoc/html/sources.rs
+++ b/src/librustdoc/html/sources.rs
@@ -120,7 +120,7 @@ impl<'a> SourceCollector<'a> {
static_extra_scripts: &[&format!("source-script{}", self.scx.resource_suffix)],
};
let v = layout::render(&self.scx.layout,
- &page, &(""), &Source(contents),
+ &page, "", &Source(contents),
&self.scx.themes);
self.scx.fs.write(&cur, v.as_bytes())?;
self.scx.local_sources.insert(p.clone(), href);