rustdoc/passes/
strip_private.rs1use crate::clean::{self, ItemIdSet};
6use crate::core::DocContext;
7use crate::fold::DocFolder;
8use crate::passes::{ImplStripper, ImportStripper, Stripper};
9
10pub(super) fn strip_private(mut krate: clean::Crate, cx: &mut DocContext<'_>) -> clean::Crate {
11 if cx.document_private() {
12 return krate;
13 }
14
15 let mut retained = ItemIdSet::default();
17 let is_json_output = cx.is_json_output();
18
19 {
21 let mut stripper = Stripper {
22 retained: &mut retained,
23 effective_visibilities: &cx.cache.effective_visibilities,
24 update_retained: true,
25 is_json_output,
26 tcx: cx.tcx,
27 };
28 krate =
29 ImportStripper { tcx: cx.tcx, is_json_output, document_hidden: cx.document_hidden() }
30 .fold_crate(stripper.fold_crate(krate));
31 }
32
33 let mut stripper = ImplStripper {
35 tcx: cx.tcx,
36 retained: &retained,
37 cache: &cx.cache,
38 is_json_output,
39 document_private: cx.document_private(),
40 document_hidden: cx.document_hidden(),
41 };
42 stripper.fold_crate(krate)
43}