Skip to content

Commit 6165313

Browse files
layout::render takes Print instead of fmt::Display
1 parent 6ab9b32 commit 6165313

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

src/librustdoc/html/format.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,11 @@ impl Buffer {
9999
self.into_inner()
100100
}
101101

102-
crate fn display<T: fmt::Display>(&mut self, t: T) {
102+
crate fn with_formatter<T: FnOnce(&mut fmt::Formatter<'_>) -> fmt::Result>(&mut self, t: T) {
103+
self.from_display(display_fn(move |f| (t)(f)));
104+
}
105+
106+
crate fn from_display<T: std::fmt::Display>(&mut self, t: T) {
103107
if self.for_html {
104108
write!(self, "{}", t);
105109
} else {

src/librustdoc/html/layout.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use std::fmt;
21
use std::path::PathBuf;
32

43
use crate::externalfiles::ExternalHtml;
@@ -31,11 +30,11 @@ pub struct Page<'a> {
3130
pub static_extra_scripts: &'a [&'a str],
3231
}
3332

34-
pub fn render<T: fmt::Display, S: Print>(
33+
pub fn render<T: Print, S: Print>(
3534
layout: &Layout,
3635
page: &Page<'_>,
3736
sidebar: S,
38-
t: &T,
37+
t: T,
3938
themes: &[PathBuf],
4039
) -> String {
4140
let static_root_path = page.static_root_path.unwrap_or(page.root_path);
@@ -175,7 +174,7 @@ pub fn render<T: fmt::Display, S: Print>(
175174
} else {
176175
String::new()
177176
},
178-
content = *t,
177+
content = Buffer::html().to_display(t),
179178
static_root_path = static_root_path,
180179
root_path = page.root_path,
181180
css_class = page.css_class,

src/librustdoc/html/render.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ use crate::docfs::{DocFS, ErrorStorage, PathError};
6565
use crate::doctree;
6666
use crate::fold::DocFolder;
6767
use crate::html::escape::Escape;
68-
use crate::html::format::{Print, Buffer, AsyncSpace, ConstnessSpace};
68+
use crate::html::format::{Buffer, AsyncSpace, ConstnessSpace};
6969
use crate::html::format::{GenericBounds, WhereClause, href, AbiSpace, DefaultSpace};
7070
use crate::html::format::{VisSpace, Function, UnsafetySpace, MutableSpace};
7171
use crate::html::format::fmt_impl_for_trait_page;
@@ -1172,7 +1172,7 @@ themePicker.onblur = handleThemeButtonsBlur;
11721172
})
11731173
.collect::<String>());
11741174
let v = layout::render(&cx.shared.layout,
1175-
&page, "", &content,
1175+
&page, "", content,
11761176
&cx.shared.themes);
11771177
cx.shared.fs.write(&dst, v.as_bytes())?;
11781178
}
@@ -1919,7 +1919,7 @@ impl Context {
19191919
String::new()
19201920
};
19211921
let v = layout::render(&self.shared.layout,
1922-
&page, sidebar, &all,
1922+
&page, sidebar, |buf: &mut Buffer| buf.from_display(all),
19231923
&self.shared.themes);
19241924
self.shared.fs.write(&final_file, v.as_bytes())?;
19251925

@@ -1935,7 +1935,7 @@ impl Context {
19351935
themes.push(PathBuf::from("settings.css"));
19361936
let v = layout::render(
19371937
&self.shared.layout,
1938-
&page, sidebar, &settings,
1938+
&page, sidebar, |buf: &mut Buffer| buf.from_display(settings),
19391939
&themes);
19401940
self.shared.fs.write(&settings_file, v.as_bytes())?;
19411941

@@ -1993,7 +1993,7 @@ impl Context {
19931993
if !self.render_redirect_pages {
19941994
layout::render(&self.shared.layout, &page,
19951995
|buf: &mut _| print_sidebar(self, it, buf),
1996-
&Item{ cx: self, item: it },
1996+
|buf: &mut Buffer| buf.from_display(Item { cx: self, item: it }),
19971997
&self.shared.themes)
19981998
} else {
19991999
let mut url = self.root_path();

src/librustdoc/html/sources.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::fold::DocFolder;
44
use crate::html::layout;
55
use crate::html::render::{Error, SharedContext, BASIC_KEYWORDS};
66
use crate::html::highlight;
7+
use crate::html::format::Buffer;
78
use std::ffi::OsStr;
89
use std::fs;
910
use std::path::{Component, Path, PathBuf};
@@ -120,7 +121,7 @@ impl<'a> SourceCollector<'a> {
120121
static_extra_scripts: &[&format!("source-script{}", self.scx.resource_suffix)],
121122
};
122123
let v = layout::render(&self.scx.layout,
123-
&page, "", &Source(contents),
124+
&page, "", |buf: &mut Buffer| buf.from_display(Source(&contents)),
124125
&self.scx.themes);
125126
self.scx.fs.write(&cur, v.as_bytes())?;
126127
self.scx.local_sources.insert(p.clone(), href);

0 commit comments

Comments
 (0)