Enum ssz::DecodeError
source · pub enum DecodeError {
InvalidByteLength {
len: usize,
expected: usize,
},
InvalidLengthPrefix {
len: usize,
expected: usize,
},
OutOfBoundsByte {
i: usize,
},
OffsetIntoFixedPortion(usize),
OffsetSkipsVariableBytes(usize),
OffsetsAreDecreasing(usize),
OffsetOutOfBounds(usize),
InvalidListFixedBytesLen(usize),
ZeroLengthItem,
BytesInvalid(String),
UnionSelectorInvalid(u8),
NoMatchingVariant,
}
Expand description
Returned when SSZ decoding fails.
Variants§
InvalidByteLength
The bytes supplied were too short to be decoded into the specified type.
InvalidLengthPrefix
The given bytes were too short to be read as a length prefix.
OutOfBoundsByte
A length offset pointed to a byte that was out-of-bounds (OOB).
A bytes may be OOB for the following reasons:
- It is
>= bytes.len()
. - When decoding variable length items, the 1st offset points “backwards” into the fixed
length items (i.e.,
length[0] < BYTES_PER_LENGTH_OFFSET
). - When decoding variable-length items, the
n
’th offset was less than then-1
’th offset.
OffsetIntoFixedPortion(usize)
An offset points “backwards” into the fixed-bytes portion of the message, essentially double-decoding bytes that will also be decoded as fixed-length.
https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#1-Offset-into-fixed-portion
OffsetSkipsVariableBytes(usize)
The first offset does not point to the byte that follows the fixed byte portion, essentially skipping a variable-length byte.
https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#2-Skip-first-variable-byte
OffsetsAreDecreasing(usize)
An offset points to bytes prior to the previous offset. Depending on how you look at it, this either double-decodes bytes or makes the first offset a negative-length.
https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#3-Offsets-are-decreasing
OffsetOutOfBounds(usize)
An offset references byte indices that do not exist in the source bytes.
https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#4-Offsets-are-out-of-bounds
InvalidListFixedBytesLen(usize)
A variable-length list does not have a fixed portion that is cleanly divisible by
BYTES_PER_LENGTH_OFFSET
.
ZeroLengthItem
Some item has a ssz_fixed_len
of zero. This is illegal.
BytesInvalid(String)
The given bytes were invalid for some application-level reason.
UnionSelectorInvalid(u8)
The given union selector is out of bounds.
NoMatchingVariant
The given bytes could not be successfully decoded into any variant of the transparent enum.
Trait Implementations§
source§impl Clone for DecodeError
impl Clone for DecodeError
source§fn clone(&self) -> DecodeError
fn clone(&self) -> DecodeError
1.0.0 · 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 PartialEq for DecodeError
impl PartialEq for DecodeError
source§fn eq(&self, other: &DecodeError) -> bool
fn eq(&self, other: &DecodeError) -> bool
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for DecodeError
Auto Trait Implementations§
impl Freeze for DecodeError
impl RefUnwindSafe for DecodeError
impl Send for DecodeError
impl Sync for DecodeError
impl Unpin for DecodeError
impl UnwindSafe for DecodeError
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> 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