use std::path::PathBuf;
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct ScanProgress {
pub files_scanned: u64,
pub dirs_scanned: u64,
pub bytes_scanned: u64,
pub current_path: PathBuf,
pub errors_count: u64,
pub elapsed: Duration,
}
impl ScanProgress {
pub fn new() -> Self {
Self {
files_scanned: 0,
dirs_scanned: 0,
bytes_scanned: 0,
current_path: PathBuf::new(),
errors_count: 0,
elapsed: Duration::ZERO,
}
}
pub fn files_per_second(&self) -> f64 {
if self.elapsed.as_secs_f64() > 0.0 {
self.files_scanned as f64 / self.elapsed.as_secs_f64()
} else {
0.0
}
}
pub fn bytes_per_second(&self) -> f64 {
if self.elapsed.as_secs_f64() > 0.0 {
self.bytes_scanned as f64 / self.elapsed.as_secs_f64()
} else {
0.0
}
}
pub fn total_items(&self) -> u64 {
self.files_scanned + self.dirs_scanned
}
}
impl Default for ScanProgress {
fn default() -> Self {
Self::new()
}
}