diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-09-13 08:41:27 -0400 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-09-13 19:44:44 -0400 |
| commit | 3f144e119ec958b2a6ac3db3568b1bd2b3ba488a (patch) | |
| tree | c428b5461f338782ba6ba751d69a5b9186737180 | |
| parent | 8a9dab3a203ef26c6f8477bd388f2394747d598e (diff) | |
| download | rust-3f144e119ec958b2a6ac3db3568b1bd2b3ba488a.tar.gz rust-3f144e119ec958b2a6ac3db3568b1bd2b3ba488a.zip | |
Move Toc printing from fmt::Display
| -rw-r--r-- | src/librustdoc/html/markdown.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/toc.rs | 37 |
2 files changed, 17 insertions, 22 deletions
diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 1a4fa38ff8d..9ff1e1d3119 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -752,7 +752,7 @@ impl MarkdownWithToc<'_> { html::push_html(&mut s, p); } - format!("<nav id=\"TOC\">{}</nav>{}", toc.into_toc(), s) + format!("<nav id=\"TOC\">{}</nav>{}", toc.into_toc().print(), s) } } diff --git a/src/librustdoc/html/toc.rs b/src/librustdoc/html/toc.rs index 2da7aceae8b..0fb2f8dd796 100644 --- a/src/librustdoc/html/toc.rs +++ b/src/librustdoc/html/toc.rs @@ -1,10 +1,7 @@ //! Table-of-contents creation. -use std::fmt; -use std::string::String; - /// A (recursive) table of contents -#[derive(PartialEq)] +#[derive(Debug, PartialEq)] pub struct Toc { /// The levels are strictly decreasing, i.e. /// @@ -28,7 +25,7 @@ impl Toc { } } -#[derive(PartialEq)] +#[derive(Debug, PartialEq)] pub struct TocEntry { level: u32, sec_number: String, @@ -165,25 +162,23 @@ impl TocBuilder { } } -impl fmt::Debug for Toc { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - fmt::Display::fmt(self, f) - } -} - -impl fmt::Display for Toc { - fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(fmt, "<ul>")?; +impl Toc { + fn print_inner(&self, v: &mut String) { + v.push_str("<ul>"); for entry in &self.entries { - // recursively format this table of contents (the - // `{children}` is the key). - write!(fmt, - "\n<li><a href=\"#{id}\">{num} {name}</a>{children}</li>", + // recursively format this table of contents + v.push_str(&format!("\n<li><a href=\"#{id}\">{num} {name}</a>", id = entry.id, - num = entry.sec_number, name = entry.name, - children = entry.children)? + num = entry.sec_number, name = entry.name)); + entry.children.print_inner(&mut *v); + v.push_str("</li>"); } - write!(fmt, "</ul>") + v.push_str("</ul>"); + } + crate fn print(&self) -> String { + let mut v = String::new(); + self.print_inner(&mut v); + v } } |
