Enum tyche::expr::Evaled

source ·
#[non_exhaustive]
pub enum Evaled<'a> { Num(i32), Dice(Rolled<'a>), Neg(Box<Self>), Add(Box<Self>, Box<Self>), Sub(Box<Self>, Box<Self>), Mul(Box<Self>, Box<Self>), DivDown(Box<Self>, Box<Self>), DivUp(Box<Self>, Box<Self>), }
Expand description

Tree structure of individual elements of an evaluated mathematical dice expression

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Num(i32)

Standalone integer

§

Dice(Rolled<'a>)

Rolled dice

§

Neg(Box<Self>)

Negation of an expression (makes the result of it negative)

§

Add(Box<Self>, Box<Self>)

Sum of two expressions

§

Sub(Box<Self>, Box<Self>)

Difference of two expressions

§

Mul(Box<Self>, Box<Self>)

Product of two expressions

§

DivDown(Box<Self>, Box<Self>)

Integer quotient of two expressions (rounded down)

§

DivUp(Box<Self>, Box<Self>)

Integer quotient of two expressions (rounded up)

Implementations§

source§

impl Evaled<'_>

source

pub fn calc(&self) -> Result<i32, CalcError>

Calculates the final result of the evaluated expression and all of its children (if any).

§Errors

If there is an integer overflow or division error, or an error calculating the total of a set of dice rolls,an error variant will be returned.

source

pub fn into_owned(self) -> Evaled<'static>

Moves all of self’s owned data into a new instance and clones any unowned data in order to create a 'static instance of self.

Trait Implementations§

source§

impl<'a> Clone for Evaled<'a>

source§

fn clone(&self) -> Evaled<'a>

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<'a> Debug for Evaled<'a>

source§

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

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

impl Describe for Evaled<'_>

source§

fn describe(&self, list_limit: Option<usize>) -> String

Builds a detailed expression string with additional information about non-deterministic elements. Any elements of the expression that can have a different result between multiple evaluations or multiple results should list all of the specific individual results that occurred (ideally, up to list_limit of them).
source§

impl Display for Evaled<'_>

source§

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

Formats the value using the given formatter. Read more

The output of this implementation is equivalent to Self::describe(None).

source§

impl HasOpType for Evaled<'_>

source§

fn op_type(&self) -> OpType

Gets the type of this expression.
source§

fn is_value(&self) -> bool

Checks whether this expression is a single value.
source§

fn is_unary(&self) -> bool

Checks whether this expression is a unary operation.
source§

fn is_additive(&self) -> bool

Checks whether this expression is an additive operation.
source§

fn is_multiplicative(&self) -> bool

Checks whether this expression is a multiplicative operation.
source§

fn is_binary(&self) -> bool

Checks whether this expression is a binary (additive or multiplicative) operation.
source§

impl<'a> PartialEq for Evaled<'a>

source§

fn eq(&self, other: &Evaled<'a>) -> 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<'a> Eq for Evaled<'a>

source§

impl<'a> StructuralPartialEq for Evaled<'a>

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for Evaled<'a>

§

impl<'a> Send for Evaled<'a>

§

impl<'a> Sync for Evaled<'a>

§

impl<'a> Unpin for Evaled<'a>

§

impl<'a> UnwindSafe for Evaled<'a>

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
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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.

§

impl<'p, T> Seq<'p, T> for T
where T: Clone,

§

type Item<'a> = &'a T where T: 'a

The item yielded by the iterator.
§

type Iter<'a> = Once<&'a T> where T: 'a

An iterator over the items within this container, by reference.
§

fn seq_iter(&self) -> <T as Seq<'p, T>>::Iter<'_>

Iterate over the elements of the container.
§

fn contains(&self, val: &T) -> bool
where T: PartialEq,

Check whether an item is contained within this sequence.
§

fn to_maybe_ref<'b>(item: <T as Seq<'p, T>>::Item<'b>) -> Maybe<T, &'p T>
where 'p: 'b,

Convert an item of the sequence into a [MaybeRef].
source§

impl<T> ToOwned for T
where 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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<T> MaybeSync for T

§

impl<'p, T> OrderedSeq<'p, T> for T
where T: Clone,