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:
parent
34ece7ad71
commit
85299e360c
1 changed files with 15 additions and 2 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue