1 use rustc_hir::def_id::DefIdSet;
4 use crate::core::DocContext;
5 use crate::fold::DocFolder;
6 use crate::passes::{ImplStripper, ImportStripper, Pass, Stripper};
8 pub const STRIP_PRIVATE: Pass = Pass {
11 description: "strips all private items from a crate which cannot be seen externally, \
12 implies strip-priv-imports",
15 /// Strip private items from the point of view of a crate or externally from a
16 /// crate, specified by the `xcrate` flag.
17 pub fn strip_private(mut krate: clean::Crate, cx: &DocContext<'_>) -> clean::Crate {
18 // This stripper collects all *retained* nodes.
19 let mut retained = DefIdSet::default();
20 let access_levels = cx.renderinfo.borrow().access_levels.clone();
22 // strip all private items
24 let mut stripper = Stripper {
25 retained: &mut retained,
26 access_levels: &access_levels,
27 update_retained: true,
29 krate = ImportStripper.fold_crate(stripper.fold_crate(krate));
32 // strip all impls referencing private items
33 let mut stripper = ImplStripper { retained: &retained };
34 stripper.fold_crate(krate)