]> git.lizzy.rs Git - rust.git/blob - src/librustdoc/passes/strip_private.rs
Auto merge of #88717 - tabokie:vecdeque-fast-append, r=m-ou-se
[rust.git] / src / librustdoc / passes / strip_private.rs
1 use crate::clean::{self, ItemIdSet};
2 use crate::core::DocContext;
3 use crate::fold::DocFolder;
4 use crate::passes::{ImplStripper, ImportStripper, Pass, Stripper};
5
6 crate const STRIP_PRIVATE: Pass = Pass {
7     name: "strip-private",
8     run: strip_private,
9     description: "strips all private items from a crate which cannot be seen externally, \
10                   implies strip-priv-imports",
11 };
12
13 /// Strip private items from the point of view of a crate or externally from a
14 /// crate, specified by the `xcrate` flag.
15 crate fn strip_private(mut krate: clean::Crate, cx: &mut DocContext<'_>) -> clean::Crate {
16     // This stripper collects all *retained* nodes.
17     let mut retained = ItemIdSet::default();
18
19     // strip all private items
20     {
21         let mut stripper = Stripper {
22             retained: &mut retained,
23             access_levels: &cx.cache.access_levels,
24             update_retained: true,
25         };
26         krate = ImportStripper.fold_crate(stripper.fold_crate(krate));
27     }
28
29     // strip all impls referencing private items
30     let mut stripper = ImplStripper { retained: &retained };
31     stripper.fold_crate(krate)
32 }