Skip to main content

EvalError

Struct EvalError 

Source
pub struct EvalError {
    pub kind: EvalErrorKind,
    pub span: Option<Span>,
    pub message: String,
    pub source: Option<Arc<dyn Error + Send + Sync>>,
}
Expand description

An error that occurs during template evaluation.

Carries a structured EvalErrorKind, a human-readable message, an optional source Span, and an optional underlying error cause.

§Error chaining

When a host’s EvalContext implementation catches an underlying error (database, I/O, etc.), it can preserve the original error chain using with_source:

use weaver_lang::EvalError;

fn example() -> Result<(), EvalError> {
    let io_err = std::io::Error::new(std::io::ErrorKind::NotFound, "file missing");
    Err(EvalError::host_error("failed to load entry").with_source(io_err))
}

Fields§

§kind: EvalErrorKind§span: Option<Span>§message: String§source: Option<Arc<dyn Error + Send + Sync>>

The underlying error that caused this evaluation error, if any.

Wrapped in Arc so that EvalError remains Clone.

Implementations§

Source§

impl EvalError

Source

pub fn new(kind: EvalErrorKind, message: impl Into<String>) -> Self

Source

pub fn with_span(self, span: Span) -> Self

Source

pub fn with_source(self, source: impl Error + Send + Sync + 'static) -> Self

Attach an underlying error cause to this evaluation error.

This preserves the full error chain for production logging and debugging. The source is wrapped in an Arc so that EvalError remains Clone.

Source

pub fn undefined_variable(scope: &str, name: &str) -> Self

Source

pub fn undefined_processor(namespace: &str, name: &str) -> Self

Source

pub fn undefined_command(name: &str) -> Self

Source

pub fn type_error(expected: &str, got: &str) -> Self

Source

pub fn not_iterable(got: &str) -> Self

Source

pub fn host_error(message: impl Into<String>) -> Self

Trait Implementations§

Source§

impl Clone for EvalError

Source§

fn clone(&self) -> EvalError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EvalError

Source§

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

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

impl Display for EvalError

Source§

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

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

impl Error for EvalError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

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§

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

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.