Struct Repeat

Source
pub struct Repeat { /* private fields */ }
Expand description

A stack of repeat counters.

Implementations§

Source§

impl Repeat

Source

pub fn new() -> Self

Create a new repeat stack.

Source

pub fn repeat_from(&mut self, location: usize, amount: Word) -> RepeatResult<()>

Add a new repeat location and counter to the stack. Counts down to 0.

Source

pub fn repeat_to(&mut self, location: usize, limit: Word) -> RepeatResult<()>

Add a new repeat location and counter to the stack. Counts up from 0 to limit - 1.

Source

pub fn counter(&self) -> RepeatResult<Word>

Get the current repeat counter.

Returns an error if the stack is empty.

Source

pub fn repeat(&mut self) -> RepeatResult<Option<usize>>

If there is a counter on the stack and the counter has greater then 1 repeat left then this will decrement the counter and return the index to repeat to.

If the counter is 1 then this will pop the counter and return None because the repeat is done.

If called when the stack is empty then this will return an error.

Note that because the code has run once before the RepeatEnd is hit then we stop at 1.

Trait Implementations§

Source§

impl Debug for Repeat

Source§

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

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

impl Default for Repeat

Source§

fn default() -> Repeat

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

impl PartialEq for Repeat

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Repeat

Auto Trait Implementations§

§

impl Freeze for Repeat

§

impl RefUnwindSafe for Repeat

§

impl Send for Repeat

§

impl Sync for Repeat

§

impl Unpin for Repeat

§

impl UnwindSafe for Repeat

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.