rustdoc/json/
import_finder.rs1use rustc_hir::def_id::DefIdSet;
2
3use crate::clean::{self, Import, ImportSource, Item};
4use crate::fold::DocFolder;
5
6pub(crate) fn get_imports(krate: clean::Crate) -> (clean::Crate, DefIdSet) {
15 let mut finder = ImportFinder::default();
16 let krate = finder.fold_crate(krate);
17 (krate, finder.imported)
18}
19
20#[derive(Default)]
21struct ImportFinder {
22 imported: DefIdSet,
23}
24
25impl DocFolder for ImportFinder {
26 fn fold_item(&mut self, i: Item) -> Option<Item> {
27 match i.kind {
28 clean::ItemKind::Import(Import {
29 source: ImportSource { did: Some(did), .. }, ..
30 }) => {
31 self.imported.insert(did);
32 Some(i)
33 }
34
35 _ => Some(self.fold_item_recur(i)),
36 }
37 }
38}