[−][src]Enum rustc_middle::mir::interpret::error::InterpError

pub enum InterpError<'tcx> {
    UndefinedBehavior(UndefinedBehaviorInfo<'tcx>),
    Unsupported(UnsupportedOpInfo),
    InvalidProgram(InvalidProgramInfo<'tcx>),
    ResourceExhaustion(ResourceExhaustionInfo),
    MachineStop(Box<dyn MachineStopType>),
}

Variants

UndefinedBehavior(UndefinedBehaviorInfo<'tcx>)

The program caused undefined behavior.

Unsupported(UnsupportedOpInfo)

The program did something the interpreter does not support (some of these might be UB but the interpreter is not sure).

InvalidProgram(InvalidProgramInfo<'tcx>)

The program was invalid (ill-typed, bad MIR, not sufficiently monomorphized, ...).

ResourceExhaustion(ResourceExhaustionInfo)

The program exhausted the interpreter's resources (stack/heap too big, execution takes too long, ...).

MachineStop(Box<dyn MachineStopType>)

Stop execution for a machine-controlled reason. This is never raised by the core engine itself.

Implementations

impl<'_> InterpError<'_>[src]

pub fn allocates(&self) -> bool[src]

Some errors allocate to be created as they contain free-form strings. And sometimes we want to be sure that did not happen as it is a waste of resources.

Trait Implementations

impl<'_> Debug for InterpError<'_>[src]

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

impl<'tcx> From<InterpError<'tcx>> for InterpErrorInfo<'tcx>[src]

Auto Trait Implementations

impl<'tcx> !RefUnwindSafe for InterpError<'tcx>

impl<'tcx> !Send for InterpError<'tcx>

impl<'tcx> !Sync for InterpError<'tcx>

impl<'tcx> Unpin for InterpError<'tcx>

impl<'tcx> !UnwindSafe for InterpError<'tcx>

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<'a, T> Captures<'a> for T where
    T: ?Sized, 
[src]

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

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

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

type Error = !

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

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<T> WithConstness for T[src]