pub enum Substack<'a, T> {
Frame(Stackframe<'a, T>),
Bottom,
}Expand description
A FILO stack that lives on the regular call stack as a linked list.
Variants§
Implementations§
source§impl<'a, T> Substack<'a, T>
impl<'a, T> Substack<'a, T>
sourcepub fn opt(&'a self) -> Option<&'a Stackframe<'a, T>>
pub fn opt(&'a self) -> Option<&'a Stackframe<'a, T>>
Convert the substack into an option of stackframe
sourcepub fn iter(&self) -> SubstackIterator<'_, T> ⓘ
pub fn iter(&self) -> SubstackIterator<'_, T> ⓘ
Construct an iterator starting from the top and moving down the stack
sourcepub fn new_frame(&'a self, item: T) -> Stackframe<'a, T>
pub fn new_frame(&'a self, item: T) -> Stackframe<'a, T>
Create a new frame on top of this substack
sourcepub fn pop(&'a self, count: usize) -> &'a Self
pub fn pop(&'a self, count: usize) -> &'a Self
obtain the previous stackframe if one exists.
Panics
if the index is greater than the number of stack frames
sourcepub fn unreverse(&self) -> Vec<T>where
T: Clone,
pub fn unreverse(&self) -> Vec<T>where T: Clone,
Clones the elements into a vector starting at the bottom of the stack
sourcepub fn rfold<'b, U, F: FnMut(U, &'b T) -> U>(
&'b self,
default: U,
callback: F
) -> U
pub fn rfold<'b, U, F: FnMut(U, &'b T) -> U>( &'b self, default: U, callback: F ) -> U
Visit all of the elements lowest first. This uses internal recursion, but since the iterator itself fits on the stack it’s very likely that the reversed slices to it also will. If the callback is pure, these stack frames should store a single reference to the corresponding item.
Trait Implementations§
impl<'a, T: Copy> Copy for Substack<'a, T>
Auto Trait Implementations§
impl<'a, T> RefUnwindSafe for Substack<'a, T>where T: RefUnwindSafe,
impl<'a, T> Send for Substack<'a, T>where T: Send + Sync,
impl<'a, T> Sync for Substack<'a, T>where T: Sync,
impl<'a, T> Unpin for Substack<'a, T>where T: Unpin,
impl<'a, T> UnwindSafe for Substack<'a, T>where T: UnwindSafe + RefUnwindSafe,
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