From 3008626b7ca2e98949531d63768e36db169b68fb Mon Sep 17 00:00:00 2001 From: binarycat Date: Fri, 7 Nov 2025 12:20:04 -0600 Subject: [PATCH] rustdoc: microoptimize render_item, move stuff out of common path --- src/librustdoc/html/render/context.rs | 88 ++++++++++++++------------- 1 file changed, 45 insertions(+), 43 deletions(-) diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs index 4c06d0da47013..e42997d5b4a14 100644 --- a/src/librustdoc/html/render/context.rs +++ b/src/librustdoc/html/render/context.rs @@ -203,52 +203,54 @@ impl<'tcx> Context<'tcx> { // `record_extern_fqn` correctly points to external items. render_redirect_pages = true; } - let mut title = String::new(); - if !is_module { - title.push_str(it.name.unwrap().as_str()); - } - let short_title; - let short_title = if is_module { - let module_name = self.current.last().unwrap(); - short_title = if it.is_crate() { - format!("Crate {module_name}") - } else { - format!("Module {module_name}") - }; - &short_title[..] - } else { - it.name.as_ref().unwrap().as_str() - }; - if !it.is_fake_item() { + + if !render_redirect_pages { + let mut title = String::new(); if !is_module { - title.push_str(" in "); + title.push_str(it.name.unwrap().as_str()); } - // No need to include the namespace for primitive types and keywords - title.push_str(&join_path_syms(&self.current)); - }; - title.push_str(" - Rust"); - let tyname = it.type_(); - let desc = plain_text_summary(&it.doc_value(), &it.link_names(self.cache())); - let desc = if !desc.is_empty() { - desc - } else if it.is_crate() { - format!("API documentation for the Rust `{}` crate.", self.shared.layout.krate) - } else { - format!( - "API documentation for the Rust `{name}` {tyname} in crate `{krate}`.", - name = it.name.as_ref().unwrap(), - krate = self.shared.layout.krate, - ) - }; - let name; - let tyname_s = if it.is_crate() { - name = format!("{tyname} crate"); - name.as_str() - } else { - tyname.as_str() - }; + let short_title; + let short_title = if is_module { + let module_name = self.current.last().unwrap(); + short_title = if it.is_crate() { + format!("Crate {module_name}") + } else { + format!("Module {module_name}") + }; + &short_title[..] + } else { + it.name.as_ref().unwrap().as_str() + }; + if !it.is_fake_item() { + if !is_module { + title.push_str(" in "); + } + // No need to include the namespace for primitive types and keywords + title.push_str(&join_path_syms(&self.current)); + }; + title.push_str(" - Rust"); + let tyname = it.type_(); + let desc = plain_text_summary(&it.doc_value(), &it.link_names(self.cache())); + let desc = if !desc.is_empty() { + desc + } else if it.is_crate() { + format!("API documentation for the Rust `{}` crate.", self.shared.layout.krate) + } else { + format!( + "API documentation for the Rust `{name}` {tyname} in crate `{krate}`.", + name = it.name.as_ref().unwrap(), + krate = self.shared.layout.krate, + ) + }; + + let name; + let tyname_s = if it.is_crate() { + name = format!("{tyname} crate"); + name.as_str() + } else { + tyname.as_str() + }; - if !render_redirect_pages { let content = print_item(self, it); let page = layout::Page { css_class: tyname_s,