Enum muse_lang::vm::Fault

source ·
#[non_exhaustive]
pub enum Fault {
Show 28 variants NoBudget, Timeout, Waiting, Exception(Value), FrameChanged, Forbidden, UnknownSymbol, IncorrectNumberOfArguments, PatternMismatch, OperationOnNil, ValueFreed, NotAModule, NotAFunction, StackOverflow, StackUnderflow, UnsupportedOperation, OutOfMemory, OutOfBounds, NotMutable, DivideByZero, InvalidInstructionAddress, ExpectedSymbol, ExpectedInteger, ExpectedString, ExpectedList, InvalidArity, InvalidLabel, InvalidOpcode,
}
Expand description

A virtual machine error.

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

NoBudget

The budget for the virtual machine has been exhausted.

§

Timeout

Execution did not complete before a timeout occurred.

§

Waiting

The virtual machine is waiting for an async task.

§

Exception(Value)

A thrown exception was not handled.

§

FrameChanged

The execution frame has changed.

§

Forbidden

A declaration was found, but it is not accessible by the currently executing code.

§

UnknownSymbol

A symbol could not be resolved to a declaration or function.

§

IncorrectNumberOfArguments

A function was invoked with an unsupported number of arguments.

§

PatternMismatch

A pattern could not be matched.

§

OperationOnNil

An unsupported operation was performed on Value::NIL.

§

ValueFreed

A value was freed.

This, in general, should not happen, but it can happen through intentional usage or if a type does not implement [Trace] correctly.

§

NotAModule

A value was expected to be a module, but was not.

§

NotAFunction

A value was invoked but is not invokable.

§

StackOverflow

An allocation failed because the stack is full.

§

StackUnderflow

An attempt to return from the execution root.

§

UnsupportedOperation

A general error indicating an unsupported operation.

§

OutOfMemory

An allocation could not be performed due to memory constraints.

§

OutOfBounds

An operation attempted to access something outside of its bounds.

§

NotMutable

An assignment was attempted to an immutable declaration.

§

DivideByZero

A value was divided by zero.

§

InvalidInstructionAddress

Execution jumped to an invalid instruction address.

§

ExpectedSymbol

An operation expected a symbol.

§

ExpectedInteger

An operation expected an integer.

§

ExpectedString

An operation expected a string.

§

ExpectedList

An operation expected a list.

§

InvalidArity

An invalid value was provided for the Arity of a function.

§

InvalidLabel

An invalid label was encountered.

§

InvalidOpcode

An instruction referenced an invalid index.

This is differen than a Fault::OutOfBounds because this fault indicates invalid code rather than a logic error.

Implementations§

source§

impl Fault

source

pub fn as_symbol(&self) -> Result<Symbol, Value>

Returns this error as a Symbol.

§Errors

Returns the contained exception as Err if this fault is an exception.

source

pub fn as_exception(&self, vm: &mut VmContext<'_, '_>) -> Value

Converts this fault into an exception.

Trait Implementations§

source§

impl Clone for Fault

source§

fn clone(&self) -> Fault

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 Debug for Fault

source§

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

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

impl From<ValueFreed> for Fault

source§

fn from(_value: ValueFreed) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Fault

source§

fn eq(&self, other: &Fault) -> 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 Fault

Auto Trait Implementations§

§

impl Freeze for Fault

§

impl RefUnwindSafe for Fault

§

impl Send for Fault

§

impl Sync for Fault

§

impl Unpin for Fault

§

impl UnwindSafe for Fault

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<A> Cast for A

§

fn cast<To>(self) -> To
where To: CastFrom<A>,

Casts self to the To type. This may be a lossy operation.
§

impl<A> CastFrom<A> for A

§

fn from_cast(from: A) -> A

Returns from as Self.
§

impl<A, B> CastInto<A> for B
where A: CastFrom<B>,

§

fn cast_into(self) -> A

Returns self as To.
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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,

§

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, 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> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more