1
Fork 0

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.
This commit is contained in:
Kang Seonghoon 2014-04-09 03:25:54 +09:00 committed by Alex Crichton
parent 34ece7ad71
commit 85299e360c

View file

@ -262,10 +262,11 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
cache.stack.push(krate.name.clone()); cache.stack.push(krate.name.clone());
krate = cache.fold_crate(krate); krate = cache.fold_crate(krate);
{ {
let Cache { search_index: ref mut index,
orphan_methods: ref meths, paths: ref mut paths, ..} = cache;
// Attach all orphan methods to the type's definition if the type // Attach all orphan methods to the type's definition if the type
// has since been learned. // has since been learned.
let Cache { search_index: ref mut index,
orphan_methods: ref meths, paths: ref paths, ..} = cache;
for &(ref pid, ref item) in meths.iter() { for &(ref pid, ref item) in meths.iter() {
match paths.find(pid) { match paths.find(pid) {
Some(&(ref fqp, _)) => { Some(&(ref fqp, _)) => {
@ -280,6 +281,18 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
None => {} None => {}
} }
}; };
// Prune the paths that do not appear in the index.
let mut unseen: HashSet<ast::NodeId> = paths.keys().map(|&id| id).collect();
for item in index.iter() {
match item.parent {
Some(ref pid) => { unseen.remove(pid); }
None => {}
}
}
for pid in unseen.iter() {
paths.remove(pid);
}
} }
// Publish the search index // Publish the search index