diff options
| author | Yotam Ofek <yotam.ofek@gmail.com> | 2025-02-10 17:46:32 +0000 |
|---|---|---|
| committer | Yotam Ofek <yotam.ofek@gmail.com> | 2025-02-14 14:50:05 +0000 |
| commit | 5cc64e8da8db1baba601fff5ae90cf8cef2ba183 (patch) | |
| tree | 789cae2daf437d2de783674b0560486f45224021 /src | |
| parent | ea15f6d792069df85f4f371130a20c8d95f02074 (diff) | |
| download | rust-5cc64e8da8db1baba601fff5ae90cf8cef2ba183.tar.gz rust-5cc64e8da8db1baba601fff5ae90cf8cef2ba183.zip | |
librustdoc: lazily format "read more" link in `document_short`
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 6896925753a..204631063a2 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -569,18 +569,27 @@ fn document_short<'a, 'cx: 'a>( let (mut summary_html, has_more_content) = MarkdownSummaryLine(&s, &item.links(cx)).into_string_with_has_more_content(); - if has_more_content { - let link = - format!(" <a{}>Read more</a>", assoc_href_attr(item, link, cx).maybe_display()); + let link = if has_more_content { + let link = fmt::from_fn(|f| { + write!( + f, + " <a{}>Read more</a>", + assoc_href_attr(item, link, cx).maybe_display() + ) + }); if let Some(idx) = summary_html.rfind("</p>") { - summary_html.insert_str(idx, &link); + summary_html.insert_str(idx, &link.to_string()); + None } else { - summary_html.push_str(&link); + Some(link) } + } else { + None } + .maybe_display(); - write!(f, "<div class='docblock'>{summary_html}</div>")?; + write!(f, "<div class='docblock'>{summary_html}{link}</div>")?; } Ok(()) }) |
