use crate::crawl::traits;
pub trait Visitor<'vfs, VFS>
where VFS: crate::vfs::traits::VFS
{
type Err: From<VFS::Err>;
fn visit_file(
&mut self,
ctx: VFS::Ctx<'vfs>,
rel: VFS::OwnedPath,
stat: Option<VFS::Stat>,
recv: impl traits::RecvFile<'vfs, VFS, Self::Err>,
);
fn visit_file_handle(
&mut self,
ctx: VFS::Ctx<'vfs>,
rel: VFS::OwnedPath,
file: VFS::File,
recv: impl traits::RecvErr<Self::Err>,
);
fn visit_link(
&mut self,
ctx: VFS::Ctx<'vfs>,
rel: VFS::OwnedPath,
stat: Option<VFS::Stat>,
recv: impl traits::RecvLink<'vfs, VFS, Self::Err>,
);
fn visit_dir(
&mut self,
ctx: VFS::Ctx<'vfs>,
rel: VFS::OwnedPath,
stat: Option<VFS::Stat>,
recv: impl traits::RecvDir<'vfs, VFS, Self::Err>,
);
fn visit_dir_entry<'dir>(
&mut self,
ctx: VFS::Ctx<'vfs>,
entry: <VFS::Dir<'vfs> as crate::vfs::traits::DirectoryStream>::DirEntry<'dir>,
recv: impl traits::RecvDirEntry<'vfs, VFS, Self::Err>,
);
}
pub trait VisitorBuilder<VFS>
where VFS: crate::vfs::traits::VFS
{
type Visitor<'vfs>: Visitor<'vfs, VFS>
where Self: 'vfs;
fn build<'vfs, 't: 'vfs>(&'t self) -> Self::Visitor<'vfs>;
}