Skip to content

Commit b9e1f6e

Browse files
committed
rustdoc: Prune the paths that do not appear in the index.
For the full library and compiler docs, the size of `search-index.js` decreases by 13% (18.5% after gzip -9) which is a substantial gain.
1 parent 17f94d0 commit b9e1f6e

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

Diff for: src/librustdoc/html/render.rs

+15-2
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,11 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
262262
cache.stack.push(krate.name.clone());
263263
krate = cache.fold_crate(krate);
264264
{
265+
let Cache { search_index: ref mut index,
266+
orphan_methods: ref meths, paths: ref mut paths, ..} = cache;
267+
265268
// Attach all orphan methods to the type's definition if the type
266269
// has since been learned.
267-
let Cache { search_index: ref mut index,
268-
orphan_methods: ref meths, paths: ref paths, ..} = cache;
269270
for &(ref pid, ref item) in meths.iter() {
270271
match paths.find(pid) {
271272
Some(&(ref fqp, _)) => {
@@ -280,6 +281,18 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
280281
None => {}
281282
}
282283
};
284+
285+
// Prune the paths that do not appear in the index.
286+
let mut unseen: HashSet<ast::NodeId> = paths.keys().map(|&id| id).collect();
287+
for item in index.iter() {
288+
match item.parent {
289+
Some(ref pid) => { unseen.remove(pid); }
290+
None => {}
291+
}
292+
}
293+
for pid in unseen.iter() {
294+
paths.remove(pid);
295+
}
283296
}
284297

285298
// Publish the search index

0 commit comments

Comments
 (0)