Struct budvm::Stack

source ·
pub struct Stack { /* private fields */ }
Expand description

A stack of Values.

Implementations§

source§

impl Stack

source

pub fn new(initial_capacity: usize, maximum_capacity: usize) -> Self

Returns a new stack with enough reserved space to store initial_capacity values without reallocating and will not allow pushing more than maximum_capacity values.

source

pub fn push(&mut self, value: Value) -> Result<(), FaultKind>

Pushes value to the stack.

Errors

Returns FaultKind::StackOverflow if the stack’s maximum capacity has been reached.

source

pub fn extend<Args, ArgsIter>(&mut self, args: Args) -> Result<usize, FaultKind>where Args: IntoIterator<Item = Value, IntoIter = ArgsIter>, ArgsIter: Iterator<Item = Value> + ExactSizeIterator + DoubleEndedIterator,

Pushes multiple arguments to the stack.

source

pub fn pop_n(&mut self, count: usize) -> PoppedValues<'_>

Pops count elements from the top of the stack.

This iterator returns the values in the sequence that they are ordered on the stack, which is different than calling pop() count times sequentially. For example, if the stack contains [0, 1, 2, 3], calling pop() twice will result in 3, 2. Calling pop_n(2) will result in 2, 3.

source

pub fn top(&self) -> Result<&Value, FaultKind>

Returns a reference to the top Value on the stack, or returns a FaultKind::StackUnderflow if no values are present.

source

pub fn get(&self, index: usize) -> Result<&Value, FaultKind>

Returns a reference to the index Value from the end of the stack, or returns a FaultKind::StackUnderflow if no value is present.

source

pub fn top_mut(&mut self) -> Result<&mut Value, FaultKind>

Returns a reference to the top Value on the stack, or returns a FaultKind::StackUnderflow if no values are present.

source

pub fn pop(&mut self) -> Result<Value, FaultKind>

Pops a Value from the stack.

Errors

Returns FaultKind::StackUnderflow if the stack is empty.

source

pub fn truncate(&mut self, new_length: usize)

Truncates the stack to new_length. If the new_length is larger than the current length, this function does nothing.

source

pub fn len(&self) -> usize

Returns the number of Values contained in this stack.

source

pub fn is_empty(&self) -> bool

Returns true if this stack has no values.

source

pub const fn remaining_capacity(&self) -> usize

Returns the number of Values that can be pushed to this stack before a FaultKind::StackOverflow is raised.

source

pub fn grow_by(&mut self, additional_voids: usize) -> Result<(), FaultKind>

Grows the stack by additional_voids, inserting Value::Void to fill in any newly allocated space.

Trait Implementations§

source§

impl Clone for Stack

source§

fn clone(&self) -> Stack

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Stack

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Stack

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Index<usize> for Stack

§

type Output = Value

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<usize> for Stack

source§

fn index_mut(&mut self, index: usize) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl PartialEq<Stack> for Stack

source§

fn eq(&self, other: &Stack) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Stack

source§

impl StructuralEq for Stack

source§

impl StructuralPartialEq for Stack

Auto Trait Implementations§

§

impl !RefUnwindSafe for Stack

§

impl Send for Stack

§

impl Sync for Stack

§

impl Unpin for Stack

§

impl !UnwindSafe for Stack

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.