#[non_exhaustive]pub enum TensogramError {
Framing(String),
Metadata(String),
Encoding(String),
Compression(String),
Object(String),
Io(Error),
HashMismatch {
object_index: Option<usize>,
expected: String,
actual: String,
},
MissingHash {
object_index: usize,
},
Remote(String),
}Expand description
Top-level error type for the tensogram crate.
Variant guarantee. The enum is #[non_exhaustive] so future
versions can add new error categories (e.g. for new wire-format
features or external system integrations) without breaking
downstream match arms. Callers should always include a _ =>
fallback when matching on TensogramError.
Inner-crate errors (tensogram_encodings::PipelineError,
CompressionError, PackingError, ShuffleError,
bitmask::MaskError) are converted into Encoding /
Compression variants via e.to_string() at the boundary —
the source error chain is collapsed. This keeps the error
strings stable across language bindings (Python ValueError,
C++ typed exceptions, TypeScript EncodingError) at the cost
of losing programmatic access to the source. Tightening this
to #[from] source chains is a deliberate non-goal until a
concrete consumer needs structured introspection.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Framing(String)
Wire-format structural error: bad magic, unknown frame type, length mismatches, missing ENDF marker, etc.
Metadata(String)
CBOR metadata error: bad CBOR, missing required keys, type mismatches on per-codec params, mask method validation, etc.
Encoding(String)
Encoding / pipeline error: simple_packing rejection, shuffle failure, allocation failure on a descriptor-derived size, codec param invalid for the dtype, etc.
Compression(String)
Compression error: codec library failure, decompression short-fetch, codec not compiled in, etc.
Object(String)
Object error: out-of-range index into a data-object array.
Io(Error)
I/O error from the underlying file or socket. Source-chained
via #[from] so e.source() returns the original
std::io::Error.
HashMismatch
Frame-body hash digest disagreement between the stored slot and the recomputed digest. Both digests are 16-character lowercase hex strings of the xxh3-64 value.
object_index carries the 0-based index of the data-object
frame whose hash failed when the error originates from the
decode-time verification path (DecodeOptions::verify_hash);
it is None for header / footer / index / hash / preceder
frames where an object index has no meaning, and for
callers that don’t have one available (e.g. legacy
verify_frame_hash direct uses).
Display form: "hash mismatch on object N: expected X, got Y"
when object_index is Some(N), or "hash mismatch on frame: expected X, got Y" when it is None. The Some /
None Rust internals are deliberately not surfaced — see
[fmt_object_location].
MissingHash
Decode-time hash verification was requested via
crate::decode::DecodeOptions::verify_hash but the
frame’s FrameFlags::HASH_PRESENT bit is clear, so no
digest was recorded for this frame.
Reasons this can happen in well-formed messages:
- the producer encoded with
EncodeOptions::hashing=false(every frame’s flag is clear). - an attacker / lossy transformation cleared the flag bit.
Resolutions: decode without verify_hash, or re-encode the
source with EncodeOptions::hashing=true.
object_index carries the 0-based index of the data-object
frame whose flag was clear. The decode-time path (the only
in-tree caller) always populates this with the offending
object’s index so the user can act on the failure.
Remote(String)
Remote object-store error: HTTP transport failure, malformed URL, missing credentials, etc.
Trait Implementations§
Source§impl Debug for TensogramError
impl Debug for TensogramError
Source§impl Display for TensogramError
impl Display for TensogramError
Source§impl Error for TensogramError
impl Error for TensogramError
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()
Auto Trait Implementations§
impl !RefUnwindSafe for TensogramError
impl !UnwindSafe for TensogramError
impl Freeze for TensogramError
impl Send for TensogramError
impl Sync for TensogramError
impl Unpin for TensogramError
impl UnsafeUnpin for TensogramError
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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