Skip to content

Commit ebe9a11

Browse files
committed
rustdoc: Remove Crate.name and instead compute it on-demand
It is not as large as `Crate.src` was, but it's still 8 bytes, and `clean::Crate` is moved by-value a lot.
1 parent 85f8ae8 commit ebe9a11

File tree

6 files changed

+16
-14
lines changed

6 files changed

+16
-14
lines changed

src/librustdoc/clean/types.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ impl From<DefId> for ItemId {
116116
/// The crate currently being documented.
117117
#[derive(Clone, Debug)]
118118
crate struct Crate {
119-
crate name: Symbol,
120119
crate module: Item,
121120
crate externs: Vec<ExternalCrate>,
122121
crate primitives: ThinVec<(DefId, PrimitiveType)>,
@@ -130,6 +129,10 @@ crate struct Crate {
130129
rustc_data_structures::static_assert_size!(Crate, 104);
131130

132131
impl Crate {
132+
crate fn name(&self, tcx: TyCtxt<'_>) -> Symbol {
133+
ExternalCrate::LOCAL.name(tcx)
134+
}
135+
133136
crate fn src(&self, tcx: TyCtxt<'_>) -> FileName {
134137
ExternalCrate::LOCAL.src(tcx)
135138
}

src/librustdoc/clean/utils.rs

-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ crate fn krate(cx: &mut DocContext<'_>) -> Crate {
5757
}
5858

5959
let local_crate = ExternalCrate { crate_num: LOCAL_CRATE };
60-
let name = local_crate.name(cx.tcx);
6160
let primitives = local_crate.primitives(cx.tcx);
6261
let keywords = local_crate.keywords(cx.tcx);
6362
{
@@ -79,7 +78,6 @@ crate fn krate(cx: &mut DocContext<'_>) -> Crate {
7978
}
8079

8180
Crate {
82-
name,
8381
module,
8482
externs,
8583
primitives,

src/librustdoc/html/render/cache.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ crate fn build_index<'tcx>(krate: &clean::Crate, cache: &mut Cache, tcx: TyCtxt<
172172
// Collect the index into a string
173173
format!(
174174
r#""{}":{}"#,
175-
krate.name,
175+
krate.name(tcx),
176176
serde_json::to_string(&CrateData {
177177
doc: crate_doc,
178178
items: crate_items,

src/librustdoc/html/render/context.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -416,14 +416,14 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {
416416
let mut playground = None;
417417
if let Some(url) = playground_url {
418418
playground =
419-
Some(markdown::Playground { crate_name: Some(krate.name.to_string()), url });
419+
Some(markdown::Playground { crate_name: Some(krate.name(tcx).to_string()), url });
420420
}
421421
let mut layout = layout::Layout {
422422
logo: String::new(),
423423
favicon: String::new(),
424424
external_html,
425425
default_settings,
426-
krate: krate.name.to_string(),
426+
krate: krate.name(tcx).to_string(),
427427
css_file_extension: extension_css,
428428
generate_search_filter,
429429
scrape_examples_extension: !call_locations.is_empty(),
@@ -444,7 +444,7 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {
444444
}
445445
(sym::html_playground_url, Some(s)) => {
446446
playground = Some(markdown::Playground {
447-
crate_name: Some(krate.name.to_string()),
447+
crate_name: Some(krate.name(tcx).to_string()),
448448
url: s.to_string(),
449449
});
450450
}

src/librustdoc/html/render/write_shared.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -455,10 +455,10 @@ pub(super) fn write_shared(
455455
let dst = cx.dst.join(&format!("source-files{}.js", cx.shared.resource_suffix));
456456
let make_sources = || {
457457
let (mut all_sources, _krates) =
458-
try_err!(collect(&dst, &krate.name.as_str(), "sourcesIndex"), &dst);
458+
try_err!(collect(&dst, &krate.name(cx.tcx()).as_str(), "sourcesIndex"), &dst);
459459
all_sources.push(format!(
460460
"sourcesIndex[\"{}\"] = {};",
461-
&krate.name,
461+
&krate.name(cx.tcx()),
462462
hierarchy.to_json_string()
463463
));
464464
all_sources.sort();
@@ -473,9 +473,10 @@ pub(super) fn write_shared(
473473

474474
// Update the search index and crate list.
475475
let dst = cx.dst.join(&format!("search-index{}.js", cx.shared.resource_suffix));
476-
let (mut all_indexes, mut krates) = try_err!(collect_json(&dst, &krate.name.as_str()), &dst);
476+
let (mut all_indexes, mut krates) =
477+
try_err!(collect_json(&dst, &krate.name(cx.tcx()).as_str()), &dst);
477478
all_indexes.push(search_index);
478-
krates.push(krate.name.to_string());
479+
krates.push(krate.name(cx.tcx()).to_string());
479480
krates.sort();
480481

481482
// Sort the indexes by crate so the file will be generated identically even
@@ -599,7 +600,7 @@ pub(super) fn write_shared(
599600

600601
let implementors = format!(
601602
r#"implementors["{}"] = {};"#,
602-
krate.name,
603+
krate.name(cx.tcx()),
603604
serde_json::to_string(&implementors).unwrap()
604605
);
605606

@@ -611,7 +612,7 @@ pub(super) fn write_shared(
611612
mydst.push(&format!("{}.{}.js", remote_item_type, remote_path[remote_path.len() - 1]));
612613

613614
let (mut all_implementors, _) =
614-
try_err!(collect(&mydst, &krate.name.as_str(), "implementors"), &mydst);
615+
try_err!(collect(&mydst, &krate.name(cx.tcx()).as_str(), "implementors"), &mydst);
615616
all_implementors.push(implementors);
616617
// Sort the implementors by crate so the file will be generated
617618
// identically even with rustdoc running in parallel.

src/librustdoc/html/sources.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use std::path::{Component, Path, PathBuf};
1818

1919
crate fn render(cx: &mut Context<'_>, krate: clean::Crate) -> Result<clean::Crate, Error> {
2020
info!("emitting source files");
21-
let dst = cx.dst.join("src").join(&*krate.name.as_str());
21+
let dst = cx.dst.join("src").join(&*krate.name(cx.tcx()).as_str());
2222
cx.shared.ensure_dir(&dst)?;
2323
let mut folder = SourceCollector { dst, cx, emitted_local_sources: FxHashSet::default() };
2424
Ok(folder.fold_crate(krate))

0 commit comments

Comments
 (0)