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),