Struct Stack

Source
pub struct Stack<T1, T2> { /* private fields */ }
Expand description

just for fun (also is interesting)

Implementations§

Source§

impl<T1, T2> Stack<T1, T2>

Source

pub const fn push<T3>(self, v: T3) -> Stack<Stack<T1, T2>, Value<T3>>

Source§

impl<T1, T2> Stack<T1, Value<T2>>

Source

pub fn pop(self) -> (T1, T2)

Source

pub const fn last(&self) -> &T2

Source

pub fn last_mut(&mut self) -> &mut T2

Source§

impl<T1, T2> Stack<Value<T1>, Value<T2>>

Source

pub const fn from_two_value(v1: T1, v2: T2) -> Self

Trait Implementations§

Source§

impl<T1: Debug, T2: Debug> Debug for Stack<T1, T2>

Source§

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

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

impl<S, First, Remain, T> PopFirst<First, Stack<Remain, T>> for Stack<S, T>
where S: PopFirst<First, Remain>,

Source§

fn pop_first(self) -> (Stack<Remain, T>, First)

Source§

fn depth(&self) -> usize

Source§

fn first(&self) -> &First

Source§

fn first_mut(&mut self) -> &mut First

Source§

impl<T1, T2> PopFirst<T1, Value<T2>> for Stack<Value<T1>, Value<T2>>

Source§

fn pop_first(self) -> (Value<T2>, T1)

Source§

fn depth(&self) -> usize

Source§

fn first(&self) -> &T1

Source§

fn first_mut(&mut self) -> &mut T1

Source§

impl<S, First, After, T> PushFirst<First, Stack<After, T>> for Stack<S, T>
where S: PushFirst<First, After>,

Source§

fn push_first(self, v: First) -> Stack<After, T>

Source§

impl<First, T> PushFirst<First, Stack<Value<First>, Value<T>>> for Value<T>

Source§

fn push_first(self, v: First) -> Stack<Value<First>, Value<T>>

Auto Trait Implementations§

§

impl<T1, T2> Freeze for Stack<T1, T2>
where T1: Freeze, T2: Freeze,

§

impl<T1, T2> RefUnwindSafe for Stack<T1, T2>

§

impl<T1, T2> Send for Stack<T1, T2>
where T1: Send, T2: Send,

§

impl<T1, T2> Sync for Stack<T1, T2>
where T1: Sync, T2: Sync,

§

impl<T1, T2> Unpin for Stack<T1, T2>
where T1: Unpin, T2: Unpin,

§

impl<T1, T2> UnwindSafe for Stack<T1, T2>
where T1: UnwindSafe, T2: UnwindSafe,

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> BoxUp for T

Source§

fn box_up(self) -> Box<T>

a method equals to Box::new Read more
Source§

impl<T> DotDebug for T
where T: Debug,

Source§

fn dot_debug(self) -> T

Source§

fn dot_debug_with_info(self, info: &str) -> T

Source§

impl<T> DotDrop for T

Source§

fn drop(self)

drop function as a method Read more
Source§

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

Source§

fn dot_ref(&self) -> &Self

just returns a &self
Source§

fn dot_mut(&mut self) -> &mut Self

just returns a &mut self
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<T, F, U> MapValue<F, U> for T
where F: FnOnce(T) -> U,

Source§

fn map_value(self, op: F) -> U

a map method for every value Read more
Source§

impl<T> MutableInit for T

Source§

fn mutable_init<F>(self, f: F) -> T
where F: FnOnce(&mut T),

a method takes an owned value, changes it in a closure, then return it; Read more
Source§

fn mutable_cast<F, O>(self, f: F) -> O
where F: FnOnce(&mut T) -> O,

a method takes an owned value, changes it in a closure, then return what the closure returns; Read more
Source§

impl<T> Provide<T, Value> for T

Source§

fn provide(self) -> T

Source§

impl<T> SetMut for T

Source§

fn set<M>(&mut self, value: impl Provide<Self, M>)

similar to *self = value, and also can receive a closure returning a Self Read more
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.
Source§

impl<T> WrapInWhatever for T

Source§

fn some_wrap(self) -> Option<Self>

wrap value in Some
Source§

fn ok_wrap<Err>(self) -> Result<Self, Err>

wrap value in Ok
Source§

fn err_wrap<T>(self) -> Result<T, Self>

wrao value in Err