Stack

Struct Stack 

Source
pub struct Stack<T: Stackable>(/* private fields */);
Expand description

An owned stack of T.

Implementations§

Methods from Deref<Target = StackRef<T>>§

Source

pub fn len(&self) -> usize

Returns the number of items in the stack.

Source

pub fn is_empty(&self) -> bool

Determines if the stack is empty.

Source

pub fn iter(&self) -> Iter<'_, T>

Source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Source

pub fn get(&self, idx: usize) -> Option<&T::Ref>

Returns a reference to the element at the given index in the stack or None if the index is out of bounds

Source

pub fn get_mut(&mut self, idx: usize) -> Option<&mut T::Ref>

Returns a mutable reference to the element at the given index in the stack or None if the index is out of bounds

Source

pub fn push(&mut self, data: T) -> Result<(), ErrorStack>

Pushes a value onto the top of the stack.

Source

pub fn pop(&mut self) -> Option<T>

Removes the last element from the stack and returns it.

Trait Implementations§

Source§

impl<T: Stackable> AsRef<StackRef<T>> for Stack<T>

Source§

fn as_ref(&self) -> &StackRef<T>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T: Stackable> Borrow<StackRef<T>> for Stack<T>

Source§

fn borrow(&self) -> &StackRef<T>

Immutably borrows from an owned value. Read more
Source§

impl<T> Debug for Stack<T>
where T: Stackable, T::Ref: Debug,

Source§

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

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

impl<T: Stackable> Deref for Stack<T>

Source§

type Target = StackRef<T>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &StackRef<T>

Dereferences the value.
Source§

impl<T: Stackable> DerefMut for Stack<T>

Source§

fn deref_mut(&mut self) -> &mut StackRef<T>

Mutably dereferences the value.
Source§

impl<T: Stackable> Drop for Stack<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T: Stackable> ForeignType for Stack<T>

Source§

type CType = <T as Stackable>::StackType

The raw C type.
Source§

type Ref = StackRef<T>

The type representing a reference to this type.
Source§

unsafe fn from_ptr(ptr: *mut T::StackType) -> Stack<T>

Constructs an instance of this type from its raw type.
Source§

fn as_ptr(&self) -> *mut T::StackType

Returns a raw pointer to the wrapped value.
Source§

impl<'a, T: Stackable> IntoIterator for &'a Stack<T>

Source§

type Item = &'a <T as ForeignType>::Ref

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Iter<'a, T>

Creates an iterator from a value. Read more
Source§

impl<'a, T: Stackable> IntoIterator for &'a mut Stack<T>

Source§

type Item = &'a mut <T as ForeignType>::Ref

The type of the elements being iterated over.
Source§

type IntoIter = IterMut<'a, T>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> IterMut<'a, T>

Creates an iterator from a value. Read more
Source§

impl<T: Stackable> IntoIterator for Stack<T>

Source§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
Source§

type Item = T

The type of the elements being iterated over.
Source§

fn into_iter(self) -> IntoIter<T>

Creates an iterator from a value. Read more
Source§

impl<T: Stackable + Send> Send for Stack<T>

Source§

impl<T: Stackable + Sync> Sync for Stack<T>

Auto Trait Implementations§

§

impl<T> Freeze for Stack<T>

§

impl<T> RefUnwindSafe for Stack<T>

§

impl<T> Unpin for Stack<T>

§

impl<T> UnwindSafe for Stack<T>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes