use crate::entry::Entry;
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SkipReason {
Ignored,
TooLarge {
len: u64,
max: u64,
},
Unrepresentable,
CaseCollision {
other: String,
},
Symlink,
ContentUnavailable,
Occupied,
Io(String),
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Skipped {
pub path: String,
pub reason: SkipReason,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Conflict {
pub path: String,
pub copy_path: String,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum PauseReason {
RootMissing,
MarkerMissing,
}
#[derive(Clone, Debug, Default, PartialEq, Eq)]
pub struct Report {
pub recorded: Vec<Entry>,
pub changed: usize,
pub conflicts: Vec<Conflict>,
pub skipped: Vec<Skipped>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ScanOutcome {
Scanned(Report),
Paused(PauseReason),
}