#[non_exhaustive]pub struct WalkStop {
pub format: FormatId,
pub offset: u64,
pub remaining: u64,
pub kind: WalkStopKind,
pub cause: String,
}Expand description
Where a scanner that can ONLY walk its format in order — record after record from the start, the way the ordinary reader does — had to stop before the end of the source (Salvage Stage 3 Task 4).
§Why a walk stop is not a Sighting
A sighting is a header the scan SAW, whose structure is a header’s and
which it cannot gate. A walk stop is the opposite: a place where the
walk found nothing it could read as a record at all, and — because the
format carries nothing strong enough to search for (an ar member’s
only marker is two bytes) — cannot look any further. Folding it into
Sighting would make “saw a real header” and “could see nothing” one
channel, and describe_sightings’s own sentence (“stuffr list may
read these headers normally”) would then be false about it.
§What it must say, and why it has to be said at all
The entries a sequential walk cannot reach are unreachable by
construction, not absent: a run that recovers three entries from a
ten-entry archive with a hole after the third reports three rows, and
nothing in those rows says seven more may sit behind the hole. So the
caller prints describe_walk_stop of this on every run that has one,
and the offset it names is where a user with a hex editor would look.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.format: FormatIdThe scanner’s format, for the sentence describe_walk_stop writes.
offset: u64Where the record the walk could not read begins — the first byte after the last record it did read.
remaining: u64Bytes from Self::offset to the end of the source.
kind: WalkStopKindWhich of the two things this stop is — see WalkStopKind.
cause: StringThe ordinary reader’s own words for why that record would not read,
so the note and stuffr list’s refusal of the same bytes agree.