[][src]Struct arithmetic_eval::error::Error

pub struct Error<'a> { /* fields omitted */ }

Evaluation error together with one or more relevant code spans.

Use the StripCode implementation to convert an Error to the 'static lifetime, e.g., before boxing it into Box<dyn std::error::Error> or anyhow::Error. If the error is wrapped into a Result, you can do this via the StripResultExt trait defined in the arithmetic-parser crate:

fn compile_code(code: &str) -> anyhow::Result<ExecutableModule<'_, f64>> {
    let block = Untyped::<F64Grammar>::parse_statements(code).strip_err()?;

    // Without `strip_err()` call, the code below won't compile:
    // `Error<'_>` in general cannot be boxed into `anyhow::Error`,
    // only `Error<'static>` can.
    Ok(Environment::new().compile_module(WildcardId, &block).strip_err()?)
}

Implementations

impl<'a> Error<'a>[src]

pub fn with_span<T>(
    self,
    span: &MaybeSpanned<'a, T>,
    info: AuxErrorInfo
) -> Self
[src]

Adds an auxiliary span to this error. The span must be in the same module as the main span.

pub fn kind(&self) -> &ErrorKind[src]

Returns the source of the error.

pub fn main_span(&self) -> &CodeInModule<'a>[src]

Returns the main span for this error.

pub fn aux_spans(&self) -> &[CodeInModule<'a, AuxErrorInfo>]

Notable traits for &'_ [u8]

impl<'_> Read for &'_ [u8]impl<'_> Write for &'_ mut [u8]
[src]

Returns auxiliary spans for this error.

Trait Implementations

impl<'a> Debug for Error<'a>[src]

impl<'_> Display for Error<'_>[src]

impl<'_> Error for Error<'_>[src]

impl<'_> StripCode for Error<'_>[src]

type Stripped = Error<'static>

Resulting type after code stripping.

Auto Trait Implementations

impl<'a> !RefUnwindSafe for Error<'a>

impl<'a> Send for Error<'a>

impl<'a> Sync for Error<'a>

impl<'a> Unpin for Error<'a>

impl<'a> !UnwindSafe for Error<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Conv for T

impl<T> Conv for T

impl<T> FmtForward for T

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pipe for T where
    T: ?Sized

impl<T> Pipe for T

impl<T> PipeAsRef for T

impl<T> PipeBorrow for T

impl<T> PipeDeref for T

impl<T> PipeRef for T

impl<T> Tap for T

impl<T> Tap for T

impl<T, U> TapAsRef<U> for T where
    U: ?Sized

impl<T, U> TapBorrow<U> for T where
    U: ?Sized

impl<T> TapDeref for T

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T> TryConv for T

impl<T> TryConv for T

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,