]>
Commit | Line | Data |
---|---|---|
a2a8927a XL |
1 | //! Strip all private items from the output. Additionally implies strip_priv_imports. |
2 | //! Basically, the goal is to remove items that are not relevant for public documentation. | |
136023e0 | 3 | use crate::clean::{self, ItemIdSet}; |
9fa01778 | 4 | use crate::core::DocContext; |
60c5eb7d XL |
5 | use crate::fold::DocFolder; |
6 | use crate::passes::{ImplStripper, ImportStripper, Pass, Stripper}; | |
b7449926 | 7 | |
923072b8 | 8 | pub(crate) const STRIP_PRIVATE: Pass = Pass { |
532ac7d7 | 9 | name: "strip-private", |
60c5eb7d | 10 | run: strip_private, |
532ac7d7 | 11 | description: "strips all private items from a crate which cannot be seen externally, \ |
1b1a35ee | 12 | implies strip-priv-imports", |
532ac7d7 | 13 | }; |
9e0c209e SL |
14 | |
15 | /// Strip private items from the point of view of a crate or externally from a | |
16 | /// crate, specified by the `xcrate` flag. | |
923072b8 | 17 | pub(crate) fn strip_private(mut krate: clean::Crate, cx: &mut DocContext<'_>) -> clean::Crate { |
9e0c209e | 18 | // This stripper collects all *retained* nodes. |
136023e0 | 19 | let mut retained = ItemIdSet::default(); |
9e0c209e SL |
20 | |
21 | // strip all private items | |
22 | { | |
23 | let mut stripper = Stripper { | |
24 | retained: &mut retained, | |
6a06907d | 25 | access_levels: &cx.cache.access_levels, |
9e0c209e SL |
26 | update_retained: true, |
27 | }; | |
28 | krate = ImportStripper.fold_crate(stripper.fold_crate(krate)); | |
29 | } | |
30 | ||
31 | // strip all impls referencing private items | |
5099ac24 | 32 | let mut stripper = ImplStripper { retained: &retained, cache: &cx.cache }; |
9e0c209e SL |
33 | stripper.fold_crate(krate) |
34 | } |