rustdoc/passes/
strip_private.rs1use crate::clean::{self, ItemIdSet};
5use crate::core::DocContext;
6use crate::fold::DocFolder;
7use crate::passes::{ImplStripper, ImportStripper, Pass, Stripper};
8
9pub(crate) const STRIP_PRIVATE: Pass = Pass {
10 name: "strip-private",
11 run: Some(strip_private),
12 description: "strips all private items from a crate which cannot be seen externally, \
13 implies strip-priv-imports",
14};
15
16pub(crate) fn strip_private(mut krate: clean::Crate, cx: &mut DocContext<'_>) -> clean::Crate {
19 let mut retained = ItemIdSet::default();
21 let is_json_output = cx.is_json_output();
22
23 {
25 let mut stripper = Stripper {
26 retained: &mut retained,
27 effective_visibilities: &cx.cache.effective_visibilities,
28 update_retained: true,
29 is_json_output,
30 tcx: cx.tcx,
31 };
32 krate =
33 ImportStripper { tcx: cx.tcx, is_json_output, document_hidden: cx.document_hidden() }
34 .fold_crate(stripper.fold_crate(krate));
35 }
36
37 let mut stripper = ImplStripper {
39 tcx: cx.tcx,
40 retained: &retained,
41 cache: &cx.cache,
42 is_json_output,
43 document_private: cx.document_private(),
44 document_hidden: cx.document_hidden(),
45 };
46 stripper.fold_crate(krate)
47}