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());
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
// 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() {
match paths.find(pid) {
Some(&(ref fqp, _)) => {
@ -280,6 +281,18 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
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