pub enum DecodeError {
Show 34 variants
UnexpectedEof,
UnknownOpcode(u8),
InvalidDefinitionId(u64),
InvalidSequenceKind(u8),
InvalidBinaryKind(u8),
InvalidTowerOp(u8),
InvalidCollectOp(u8),
InvalidSeqVerbOp(u8),
BadMagic([u8; 4]),
UnsupportedVersion(u16),
InvalidUtf8,
InvalidValueType(u8),
InvalidSelectKey(u8),
InvalidLinePart(u8),
InvalidLineContent(u8),
InvalidPluralCategory(u8),
InvalidSectionKind(u8),
MissingSectionKind(u8),
FileSizeMismatch {
expected: u32,
actual: usize,
},
ChecksumMismatch {
expected: u32,
actual: u32,
},
InvalidSectionOffset {
kind: u8,
offset: u32,
},
BadInklMagic([u8; 4]),
UnsupportedInklVersion(u8),
MaxDepthExceeded(usize),
UnsupportedSectionVersion {
section: u8,
version: u8,
},
InvalidProjSegmentKind(u8),
InvalidEffectCapParam(u8),
InvalidEffectHandleParam(u8),
InvalidEffectDimensions(u8),
InvalidDebugLocalFlags(u8),
ParamCountMismatch {
declared: u8,
actual: usize,
},
DuplicateMapKey,
InvalidConventionsProjectionTag(u8),
InvalidFileSurface(u8),
}Expand description
Errors that can occur when decoding from bytes.
Variants§
UnexpectedEof
Not enough bytes remaining for the expected operand.
UnknownOpcode(u8)
Unknown opcode discriminant byte.
InvalidDefinitionId(u64)
Invalid definition id (bad tag byte).
InvalidSequenceKind(u8)
Invalid sequence kind byte.
InvalidBinaryKind(u8)
Invalid binary-operator kind byte on a fused superinstruction.
InvalidTowerOp(u8)
Invalid tower op kind byte (NS-A8 Tower opcode immediate).
InvalidCollectOp(u8)
Invalid collections+ op kind byte (NS-A7 Collect opcode immediate).
InvalidSeqVerbOp(u8)
Invalid fn-value verb kind byte (SeqVerb opcode immediate,
issue #1679).
BadMagic([u8; 4])
.inkb magic bytes are not INKB.
UnsupportedVersion(u16)
.inkb version is not supported.
InvalidUtf8
A string field contained invalid UTF-8.
InvalidValueType(u8)
Unknown value type discriminant.
InvalidSelectKey(u8)
Unknown select key discriminant.
InvalidLinePart(u8)
Unknown line part discriminant.
InvalidLineContent(u8)
Unknown line content discriminant.
InvalidPluralCategory(u8)
Unknown plural category discriminant.
InvalidSectionKind(u8)
Unknown section kind tag in .inkb offset table.
MissingSectionKind(u8)
Required section kind missing from .inkb offset table.
FileSizeMismatch
File size field doesn’t match actual buffer length.
ChecksumMismatch
CRC-32 checksum of section data doesn’t match header.
InvalidSectionOffset
Section offset table is structurally invalid (out of bounds or not monotonic).
BadInklMagic([u8; 4])
.inkl magic bytes are not INKL.
UnsupportedInklVersion(u8)
.inkl version is not supported.
MaxDepthExceeded(usize)
VAL_ARRAY/VAL_MAP nesting exceeded the decoder’s recursion-depth
cap (see MAX_DECODE_DEPTH). Guards against crafted files of deeply
nested single-element collections stack-overflowing the reader.
UnsupportedSectionVersion
A section-locally-versioned section (e.g. AliasTable,
docs/modules-spec.md §5) carried a version byte this reader doesn’t
know how to decode.
InvalidProjSegmentKind(u8)
A VAL_PROJECTION segment carried an unknown kind byte — either
malformed bytecode or the RESERVED range-segment kind (2,
docs/format-v4-rfc.md §1), which nothing emits in T1e and the
reader therefore rejects (docs/t1e-spec.md §3).
InvalidEffectCapParam(u8)
An EffectRows call atom carried an unknown capability-parameter tag
(T2-3, docs/effects-spec.md §11). Only Any (0) is legal in this
section version; path-granular tags are reserved (#826).
InvalidEffectHandleParam(u8)
An EffectRows call atom carried a non-None handle-parameter slot
(T2-3, docs/effects-spec.md §11, docs/t1d-spec.md §7). The slot is
reserved — nothing emits a bound handle in this section version.
InvalidEffectDimensions(u8)
A DirectEffects extension-flags byte (NS-A2, EffectRows section
version 3) carried a set bit outside the known
emits/tags/faults mask — the reserved bits (3–7) are rejected until
a section version graduates them.
InvalidDebugLocalFlags(u8)
A DebugLocalEntry row’s flags byte (DebugInfo section version 2,
#3395) carried a set bit outside the known has-range/synthetic mask
— the reserved bits (2–7) are rejected until a section version
graduates them, same discipline as InvalidEffectDimensions.
ParamCountMismatch
A ContainerDef’s declared param_count disagreed with the number
of per-param name/mode metadata entries that followed it (#954,
sibling of the .inkt reader’s same guard, #745). ContainerDef’s
documented invariant is that params.len() always equals
param_count whenever per-param metadata is present at all (empty
params is the separate, legitimate “count only, no metadata” case).
A mutated/corrupt .inkb asserting otherwise is malformed input.
DuplicateMapKey
A VAL_MAP entry list carried the same key twice. A legitimate
encoder never emits this — OrderedMap::insert de-duplicates on the
write side — so a repeated key is a corrupt or crafted .inkb; the
content-based OrderedMap Eq (issue #909) assumes each key appears
once, so this is rejected rather than silently keeping the last
occurrence (issue #985).
InvalidConventionsProjectionTag(u8)
An unknown discriminant tag in the conventions-projection wire codec
(issue #2111 finding 2, crate::conventions) — a mode byte,
attach-presence/resolution byte, or SchemaTypeDef tag outside the
known range. One shared variant for all three: each is “an unknown
byte in this one codec’s own tag space”, the same causal category, so
this mirrors InvalidSectionKind’s single-variant-per-codec posture
rather than minting three near-duplicate variants.
InvalidFileSurface(u8)
A DebugInfo (0x11, docs/debugger-spec.md §2.3) file-table entry
carried an unknown surface byte (only 0 Synthetic / 1 Ink / 2
Native are defined). Unlike the section’s own flags reserved-bit
tolerance (§2.2 — unknown bits are ignored, never rejected), an
unknown surface tag is a structurally different file table this
reader cannot interpret at all (it decides which ProvenanceResolver
even applies), so it is rejected rather than silently mis-surfaced.
Trait Implementations§
Source§impl Clone for DecodeError
impl Clone for DecodeError
Source§fn clone(&self) -> DecodeError
fn clone(&self) -> DecodeError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DecodeError
impl Debug for DecodeError
Source§impl Display for DecodeError
impl Display for DecodeError
impl Eq for DecodeError
Source§impl Error for DecodeError
impl Error for DecodeError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()