#[non_exhaustive]pub enum Chunk {
FileHeader(FileHeader),
ApplyOption(ApplyOption),
ApplyFreeSpace(ApplyFreeSpace),
AddDirectory(AddDirectory),
DeleteDirectory(DeleteDirectory),
Sqpk(SqpkCommand),
EndOfFile,
}Expand description
One top-level chunk parsed from a ZiPatch stream.
Each variant corresponds to a 4-byte ASCII wire tag. The tag dispatch table
mirrors the C# reference in
lib/FFXIVQuickLauncher/.../Patching/ZiPatch/Chunk/ZiPatchChunk.cs.
§Observed frequency
SE’s XIVARR+ patch files almost exclusively contain FHDR, APLY, and
SQPK chunks. ADIR/DELD can theoretically appear and are implemented,
but are rarely emitted in practice. APFS has never been observed in modern
patches (the reference implementation treats it as a no-op). EOF_ is
consumed by ZiPatchReader and is never yielded to the caller.
§Exhaustiveness
The enum is #[non_exhaustive]. Match arms should include a wildcard to
remain forward-compatible as new chunk types are added.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
FileHeader(FileHeader)
FHDR — the first chunk in every patch file; carries version and
per-version patch metadata. See FileHeader for the versioned body.
ApplyOption(ApplyOption)
APLY — sets or clears a boolean apply-time flag on the
crate::ApplyContext (e.g. “ignore missing files”). See ApplyOption.
ApplyFreeSpace(ApplyFreeSpace)
APFS — free-space book-keeping emitted by old patcher tooling; treated
as a no-op at apply time. See ApplyFreeSpace.
AddDirectory(AddDirectory)
ADIR — instructs the patcher to create a directory under the game
install root. See AddDirectory.
DeleteDirectory(DeleteDirectory)
DELD — instructs the patcher to remove a directory under the game
install root. See DeleteDirectory.
Sqpk(SqpkCommand)
SQPK — the workhorse chunk; wraps one of eight sub-commands that
add, delete, expand, or replace SqPack data. See SqpkCommand.
EndOfFile
EOF_ — marks the clean end of the patch stream. ZiPatchReader
consumes this chunk internally; it is never yielded to the caller.
Trait Implementations§
Source§impl Apply for Chunk
Dispatch table for top-level chunk variants.
impl Apply for Chunk
Dispatch table for top-level chunk variants.
FileHeader, ApplyFreeSpace, and EndOfFile are metadata or structural
chunks with no filesystem effect; they return Ok(()) immediately.
All other variants delegate to their specific Apply implementation.
impl Eq for Chunk
impl StructuralPartialEq for Chunk
Auto Trait Implementations§
impl Freeze for Chunk
impl RefUnwindSafe for Chunk
impl Send for Chunk
impl Sync for Chunk
impl Unpin for Chunk
impl UnsafeUnpin for Chunk
impl UnwindSafe for Chunk
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more