Trait arithmetic_eval::fns::IntoEvalResult[][src]

pub trait IntoEvalResult<'a, T> {
    fn into_eval_result(self) -> Result<Value<'a, T>, ErrorOutput<'a>>;
}
Expand description

Converts type into Value or an error. This is used to convert the return type of wrapped functions to the result expected by NativeFn.

Unlike with TryInto trait from the standard library, the erroneous result here does not mean that the conversion itself is impossible. Rather, it means that the function evaluation has failed for the provided args.

This trait is implemented for base value types (such as Numbers, Functions, Values), for two container types: vectors and tuples, and for Results with the error type convertible to ErrorOutput.

Required methods

fn into_eval_result(self) -> Result<Value<'a, T>, ErrorOutput<'a>>[src]

Performs the conversion.

Implementations on Foreign Types

impl<'a, T, U> IntoEvalResult<'a, T> for Result<U, String> where
    U: IntoEvalResult<'a, T>, 
[src]

impl<'a, T, U> IntoEvalResult<'a, T> for Result<U, Error<'a>> where
    U: IntoEvalResult<'a, T>, 
[src]

impl<'a, T> IntoEvalResult<'a, T> for ()[src]

impl<'a, T> IntoEvalResult<'a, T> for bool[src]

impl<'a, T> IntoEvalResult<'a, T> for Ordering[src]

impl<'a, U, T> IntoEvalResult<'a, T> for Vec<U> where
    U: IntoEvalResult<'a, T>, 
[src]

impl<'a, Num, T> IntoEvalResult<'a, Num> for (T,) where
    T: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U> IntoEvalResult<'a, Num> for (T, U) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V> IntoEvalResult<'a, Num> for (T, U, V) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V, W> IntoEvalResult<'a, Num> for (T, U, V, W) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>,
    W: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V, W, X> IntoEvalResult<'a, Num> for (T, U, V, W, X) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>,
    W: IntoEvalResult<'a, Num>,
    X: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V, W, X, Y> IntoEvalResult<'a, Num> for (T, U, V, W, X, Y) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>,
    W: IntoEvalResult<'a, Num>,
    X: IntoEvalResult<'a, Num>,
    Y: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V, W, X, Y, Z> IntoEvalResult<'a, Num> for (T, U, V, W, X, Y, Z) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>,
    W: IntoEvalResult<'a, Num>,
    X: IntoEvalResult<'a, Num>,
    Y: IntoEvalResult<'a, Num>,
    Z: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V, W, X, Y, Z, A> IntoEvalResult<'a, Num> for (T, U, V, W, X, Y, Z, A) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>,
    W: IntoEvalResult<'a, Num>,
    X: IntoEvalResult<'a, Num>,
    Y: IntoEvalResult<'a, Num>,
    Z: IntoEvalResult<'a, Num>,
    A: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V, W, X, Y, Z, A, B> IntoEvalResult<'a, Num> for (T, U, V, W, X, Y, Z, A, B) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>,
    W: IntoEvalResult<'a, Num>,
    X: IntoEvalResult<'a, Num>,
    Y: IntoEvalResult<'a, Num>,
    Z: IntoEvalResult<'a, Num>,
    A: IntoEvalResult<'a, Num>,
    B: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

impl<'a, Num, T, U, V, W, X, Y, Z, A, B, C> IntoEvalResult<'a, Num> for (T, U, V, W, X, Y, Z, A, B, C) where
    T: IntoEvalResult<'a, Num>,
    U: IntoEvalResult<'a, Num>,
    V: IntoEvalResult<'a, Num>,
    W: IntoEvalResult<'a, Num>,
    X: IntoEvalResult<'a, Num>,
    Y: IntoEvalResult<'a, Num>,
    Z: IntoEvalResult<'a, Num>,
    A: IntoEvalResult<'a, Num>,
    B: IntoEvalResult<'a, Num>,
    C: IntoEvalResult<'a, Num>, 
[src]

fn into_eval_result(self) -> Result<Value<'a, Num>, ErrorOutput<'a>>[src]

Implementors

impl<'a, T> IntoEvalResult<'a, T> for Function<'a, T>[src]

impl<'a, T> IntoEvalResult<'a, T> for Value<'a, T>[src]

impl<'a, T: Number> IntoEvalResult<'a, T> for T[src]