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 = ImportStripper {
33 tcx: cx.tcx,
34 is_json_output,
35 document_hidden: cx.render_options.document_hidden,
36 }
37 .fold_crate(stripper.fold_crate(krate));
38 }
39
40 let mut stripper = ImplStripper {
42 tcx: cx.tcx,
43 retained: &retained,
44 cache: &cx.cache,
45 is_json_output,
46 document_private: cx.render_options.document_private,
47 document_hidden: cx.render_options.document_hidden,
48 };
49 stripper.fold_crate(krate)
50}