pub(crate) struct Stack {
types: PackedTypes,
amounts: [NonZero<usize>; 102],
depth: u8,
}Expand description
A non-allocating Vec.
This has a maximum depth premised on the bound for an EPEE’s object depth.
Fields§
§types: PackedTypesThe type of the item being read.
amounts: [NonZero<usize>; 102]The amount remaining for the item being read.
depth: u8The current depth of the stack.
This is analogous to the length of a Vec, yet we use the term depth to distinguish how it
tracks the depth of an object, not the amount of items present (which would be a function of
depth and width, as noted above).
Implementations§
Source§impl Stack
impl Stack
Sourcepub(crate) fn root_object() -> Self
pub(crate) fn root_object() -> Self
Create a new stack to use with decoding the root object.
Sourcepub(crate) fn peek(&self) -> Option<(TypeOrEntry, NonZero<usize>)>
pub(crate) fn peek(&self) -> Option<(TypeOrEntry, NonZero<usize>)>
Peek the current item on the stack.
Sourcepub(crate) fn pop(&mut self) -> Option<TypeOrEntry>
pub(crate) fn pop(&mut self) -> Option<TypeOrEntry>
Pop the next item from the stack.
Source§impl Stack
impl Stack
Sourcepub(crate) fn single_step<'encoding, B: BytesLike<'encoding>>(
&mut self,
encoding: &mut B,
) -> Result<Option<SingleStepResult<'encoding, B>>, EpeeError>
pub(crate) fn single_step<'encoding, B: BytesLike<'encoding>>( &mut self, encoding: &mut B, ) -> Result<Option<SingleStepResult<'encoding, B>>, EpeeError>
Execute a single step of the decoding algorithm.
Returns Some((key, kind, len)) if an entry was read, or None otherwise. This also returns
None if the stack is empty.
Auto Trait Implementations§
impl Freeze for Stack
impl RefUnwindSafe for Stack
impl Send for Stack
impl Sync for Stack
impl Unpin for Stack
impl UnsafeUnpin for Stack
impl UnwindSafe for Stack
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
Mutably borrows from an owned value. Read more
Source§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)]const SIZE: usize = _
#[doc(hidden)]const SIZE: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const ALIGN: usize = _
#[doc(hidden)]const ALIGN: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const ALIGNMENT: Alignment = _
#[doc(hidden)]const ALIGNMENT: Alignment = _
🔬This is a nightly-only experimental API. (
ptr_alignment_type)Source§#[doc(hidden)]const IS_ZST: bool = _
#[doc(hidden)]const IS_ZST: bool = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const LAYOUT: Layout = _
#[doc(hidden)]const LAYOUT: Layout = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const MAX_SLICE_LEN: usize = _
#[doc(hidden)]const MAX_SLICE_LEN: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)The largest safe length for a
[Self]. Read more