Skip to content

Commit e32c1d3

Browse files
Auto merge of #148877 - lolbinarycat:rustdoc-opt-render-item, r=<try>
rustdoc: microoptimize render_item, move stuff out of common path
2 parents d6deffe + 3008626 commit e32c1d3

File tree

1 file changed

+45
-43
lines changed

1 file changed

+45
-43
lines changed

src/librustdoc/html/render/context.rs

Lines changed: 45 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -203,52 +203,54 @@ impl<'tcx> Context<'tcx> {
203203
// `record_extern_fqn` correctly points to external items.
204204
render_redirect_pages = true;
205205
}
206-
let mut title = String::new();
207-
if !is_module {
208-
title.push_str(it.name.unwrap().as_str());
209-
}
210-
let short_title;
211-
let short_title = if is_module {
212-
let module_name = self.current.last().unwrap();
213-
short_title = if it.is_crate() {
214-
format!("Crate {module_name}")
215-
} else {
216-
format!("Module {module_name}")
217-
};
218-
&short_title[..]
219-
} else {
220-
it.name.as_ref().unwrap().as_str()
221-
};
222-
if !it.is_fake_item() {
206+
207+
if !render_redirect_pages {
208+
let mut title = String::new();
223209
if !is_module {
224-
title.push_str(" in ");
210+
title.push_str(it.name.unwrap().as_str());
225211
}
226-
// No need to include the namespace for primitive types and keywords
227-
title.push_str(&join_path_syms(&self.current));
228-
};
229-
title.push_str(" - Rust");
230-
let tyname = it.type_();
231-
let desc = plain_text_summary(&it.doc_value(), &it.link_names(self.cache()));
232-
let desc = if !desc.is_empty() {
233-
desc
234-
} else if it.is_crate() {
235-
format!("API documentation for the Rust `{}` crate.", self.shared.layout.krate)
236-
} else {
237-
format!(
238-
"API documentation for the Rust `{name}` {tyname} in crate `{krate}`.",
239-
name = it.name.as_ref().unwrap(),
240-
krate = self.shared.layout.krate,
241-
)
242-
};
243-
let name;
244-
let tyname_s = if it.is_crate() {
245-
name = format!("{tyname} crate");
246-
name.as_str()
247-
} else {
248-
tyname.as_str()
249-
};
212+
let short_title;
213+
let short_title = if is_module {
214+
let module_name = self.current.last().unwrap();
215+
short_title = if it.is_crate() {
216+
format!("Crate {module_name}")
217+
} else {
218+
format!("Module {module_name}")
219+
};
220+
&short_title[..]
221+
} else {
222+
it.name.as_ref().unwrap().as_str()
223+
};
224+
if !it.is_fake_item() {
225+
if !is_module {
226+
title.push_str(" in ");
227+
}
228+
// No need to include the namespace for primitive types and keywords
229+
title.push_str(&join_path_syms(&self.current));
230+
};
231+
title.push_str(" - Rust");
232+
let tyname = it.type_();
233+
let desc = plain_text_summary(&it.doc_value(), &it.link_names(self.cache()));
234+
let desc = if !desc.is_empty() {
235+
desc
236+
} else if it.is_crate() {
237+
format!("API documentation for the Rust `{}` crate.", self.shared.layout.krate)
238+
} else {
239+
format!(
240+
"API documentation for the Rust `{name}` {tyname} in crate `{krate}`.",
241+
name = it.name.as_ref().unwrap(),
242+
krate = self.shared.layout.krate,
243+
)
244+
};
245+
246+
let name;
247+
let tyname_s = if it.is_crate() {
248+
name = format!("{tyname} crate");
249+
name.as_str()
250+
} else {
251+
tyname.as_str()
252+
};
250253

251-
if !render_redirect_pages {
252254
let content = print_item(self, it);
253255
let page = layout::Page {
254256
css_class: tyname_s,

0 commit comments

Comments
 (0)