pub enum Progress {
Started {
bytes_total: Option<u64>,
entries_total: usize,
},
EntryStarted {
entry: Entry,
},
EntryCompleted {
entry: Entry,
},
EntryFailed {
entry: Entry,
},
DirectoriesStarted {
total: usize,
},
DirectoryCompleted {
path: PathBuf,
},
DirectoryFailed {
path: PathBuf,
},
}Expand description
See dev-docs/design/handle-progress.md. Discrete per-entry events rather
than a cumulative snapshot; EntryFailed carries only the Entry,
not the Error — Error isn’t Clone (it wraps std::io::Error),
and the failure detail is already available from the operation’s
final OperationOutcome.failed once the handle resolves.
Variants§
Started
Emitted once per phase, before any entries in that phase start.
bytes_total is None for phases with nothing byte-sized to
report (the delete sweeps). Can be emitted more than once per
operation — sync emits it once per phase (copy, then delete).
EntryStarted
Fields
entry: EntryEntryCompleted
Fields
entry: EntryEntryFailed
Fields
entry: EntryDirectoriesStarted
The directory-creation pre-pass (operations/pipeline.rs’s
ensure_directories_exist), separate from Started/Entry*
since it operates on DirEntry, not Entry — carrying only the
destination path (not the full DirEntry) is enough for a
caller to show “N/M directories created” without extending
every Entry-typed variant to also accept DirEntry. Added
after a real run against a USB-connected exFAT drive spent about
a minute silently creating ~7,700 directories one at a time
before Started (for the file-copy phase) was ever emitted —
see dev-docs/design/handle-progress.md.