@@ -31,18 +31,18 @@ use std::{
3131/// root: std::env::current_dir().unwrap(),
3232/// hook: hook::DoNothing,
3333/// size_getter: GetApparentSize,
34- /// reporter: ErrorOnlyReporter::new(ErrorReport::SILENT),
34+ /// reporter: & ErrorOnlyReporter::new(ErrorReport::SILENT),
3535/// max_depth: 10,
3636/// };
3737/// let data_tree: DataTree<OsStringDisplay, Bytes> = builder.into();
3838/// ```
3939#[ derive( Debug ) ]
40- pub struct FsTreeBuilder < Size , SizeGetter , Hook , Report >
40+ pub struct FsTreeBuilder < ' a , Size , SizeGetter , Hook , Report >
4141where
42- Report : Reporter < Size > + Sync ,
42+ Report : Reporter < Size > + Sync + ? Sized ,
4343 Size : size:: Size + Send + Sync ,
4444 SizeGetter : GetSize < Size = Size > + Sync ,
45- Hook : hook:: Hook < Size > + Sync ,
45+ Hook : hook:: Hook < Size , Report > + Sync ,
4646{
4747 /// Root of the directory tree.
4848 pub root : PathBuf ,
@@ -51,18 +51,18 @@ where
5151 /// Hook to run after [`Self::size_getter`].
5252 pub hook : Hook ,
5353 /// Reports progress to external system.
54- pub reporter : Report ,
54+ pub reporter : & ' a Report ,
5555 /// Deepest level of descendent display in the graph. The sizes beyond the max depth still count toward total.
5656 pub max_depth : u64 ,
5757}
5858
59- impl < Size , SizeGetter , Hook , Report > From < FsTreeBuilder < Size , SizeGetter , Hook , Report > >
59+ impl < ' a , Size , SizeGetter , Hook , Report > From < FsTreeBuilder < ' a , Size , SizeGetter , Hook , Report > >
6060 for DataTree < OsStringDisplay , Size >
6161where
62- Report : Reporter < Size > + Sync ,
62+ Report : Reporter < Size > + Sync + ? Sized ,
6363 Size : size:: Size + Send + Sync ,
6464 SizeGetter : GetSize < Size = Size > + Sync ,
65- Hook : hook:: Hook < Size > + Sync ,
65+ Hook : hook:: Hook < Size , Report > + Sync ,
6666{
6767 /// Create a [`DataTree`] from an [`FsTreeBuilder`].
6868 fn from ( builder : FsTreeBuilder < Size , SizeGetter , Hook , Report > ) -> Self {
9797 let is_dir = stats. is_dir ( ) ;
9898 let size = size_getter. get_size ( & stats) ;
9999 reporter. report ( Event :: ReceiveData ( size) ) ;
100- hook. run_hook ( HookArgument :: new ( path, & stats, size) ) ;
100+ hook. run_hook ( HookArgument :: new ( path, & stats, size, reporter ) ) ;
101101 ( is_dir, size)
102102 }
103103 } ;
0 commit comments