diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 08840626259dc..f4df9ef4a8c9d 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -64,6 +64,23 @@ crate struct Buffer {
buffer: String,
}
+impl core::fmt::Write for Buffer {
+ #[inline]
+ fn write_str(&mut self, s: &str) -> fmt::Result {
+ self.buffer.write_str(s)
+ }
+
+ #[inline]
+ fn write_char(&mut self, c: char) -> fmt::Result {
+ self.buffer.write_char(c)
+ }
+
+ #[inline]
+ fn write_fmt(self: &mut Self, args: fmt::Arguments<'_>) -> fmt::Result {
+ self.buffer.write_fmt(args)
+ }
+}
+
impl Buffer {
crate fn empty_from(v: &Buffer) -> Buffer {
Buffer { for_html: v.for_html, buffer: String::new() }
diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs
index f2c111495edfb..6592a56ba46a8 100644
--- a/src/librustdoc/html/render/print_item.rs
+++ b/src/librustdoc/html/render/print_item.rs
@@ -139,8 +139,7 @@ pub(super) fn print_item(cx: &Context<'_>, item: &clean::Item, buf: &mut Buffer,
src_href: src_href.as_deref(),
};
- let heading = item_vars.render().unwrap();
- buf.write_str(&heading);
+ item_vars.render_into(buf).unwrap();
match *item.kind {
clean::ModuleItem(ref m) => item_module(buf, cx, item, &m.items),