@@ -16,11 +16,12 @@ use serde::Serialize;
1616use std:: { io:: stdout, iter:: once, num:: NonZeroU64 , path:: PathBuf } ;
1717
1818/// The sub program of the main application.
19- pub struct Sub < Size , SizeGetter , Report >
19+ pub struct Sub < Size , SizeGetter , Hook , Report >
2020where
2121 Report : ParallelReporter < Size > + Sync ,
2222 Size : size:: Size + Into < u64 > + Serialize + Send + Sync ,
2323 SizeGetter : GetSize < Size = Size > + Copy + Sync ,
24+ Hook : hook:: Hook < Size > + Copy + Sync ,
2425 DataTreeReflection < String , Size > : Into < UnitAndTree > ,
2526{
2627 /// List of files and/or directories.
3940 pub max_depth : NonZeroU64 ,
4041 /// [Get the size](GetSize) of files/directories.
4142 pub size_getter : SizeGetter ,
43+ /// Hook to run after [`Self::size_getter`].
44+ pub hook : Hook ,
4245 /// Reports measurement progress.
4346 pub reporter : Report ,
4447 /// Minimal size proportion required to appear.
@@ -47,11 +50,12 @@ where
4750 pub no_sort : bool ,
4851}
4952
50- impl < Size , SizeGetter , Report > Sub < Size , SizeGetter , Report >
53+ impl < Size , SizeGetter , Hook , Report > Sub < Size , SizeGetter , Hook , Report >
5154where
5255 Size : size:: Size + Into < u64 > + Serialize + Send + Sync ,
5356 Report : ParallelReporter < Size > + Sync ,
5457 SizeGetter : GetSize < Size = Size > + Copy + Sync ,
58+ Hook : hook:: Hook < Size > + Copy + Sync ,
5559 DataTreeReflection < String , Size > : Into < UnitAndTree > ,
5660{
5761 /// Run the sub program.
6569 column_width_distribution,
6670 max_depth,
6771 size_getter,
72+ hook,
6873 reporter,
6974 min_ratio,
7075 no_sort,
7984 reporter : & reporter,
8085 root,
8186 size_getter,
82- hook : hook :: DoNothing , // TODO: change this
87+ hook,
8388 max_depth,
8489 }
8590 . into ( )
9095 } else {
9196 return Sub {
9297 files : vec ! [ "." . into( ) ] ,
98+ hook,
9399 reporter,
94100 ..self
95101 }
0 commit comments