Skip to main content

RuntimeInvariantViolation

Enum RuntimeInvariantViolation 

Source
pub enum RuntimeInvariantViolation {
    RuntimeCycle {
        nodes: BTreeSet<TaskId>,
        offending_edge: (TaskId, TaskId),
    },
    OutputOverlap {
        first_task: TaskId,
        second_task: TaskId,
        shared_path: CanonicalPath,
    },
}
Expand description

A workspace-level invariant the scheduler detected at runtime.

Each variant carries enough information to produce a diagnostic shape-equivalent to the static DAG-014 / DAG-016 error it is the runtime analogue of: a cycle’s node set and the offending edge; an overlap’s two task identities and the shared path.

Variants§

§

RuntimeCycle

EXEC-019 runtime cycle: a length-≥2 cycle in the union of hard, soft, and producer-matching edges, discovered when a newly-materialised output added a runtime producer-matching edge that closed the cycle.

Fields

§nodes: BTreeSet<TaskId>

Every task identified as a member of the cycle.

§offending_edge: (TaskId, TaskId)

The newly-added producer-matching edge whose addition closed the cycle (predecessor, successor).

§

OutputOverlap

EXEC-020 runtime output overlap: two tasks have both materialised the same workspace-absolute path.

Fields

§first_task: TaskId

The task that claimed the path first (chronologically in the run’s completion order).

§second_task: TaskId

The task whose materialisation discovered the pre-existing claim.

§shared_path: CanonicalPath

The path both tasks materialised.

Trait Implementations§

Source§

impl Clone for RuntimeInvariantViolation

Source§

fn clone(&self) -> RuntimeInvariantViolation

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 RuntimeInvariantViolation

Source§

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

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

impl PartialEq for RuntimeInvariantViolation

Source§

fn eq(&self, other: &RuntimeInvariantViolation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Eq for RuntimeInvariantViolation

Source§

impl StructuralPartialEq for RuntimeInvariantViolation

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> Same for T

Source§

type Output = T

Should always be Self
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, 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.
Source§

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

Source§

fn vzip(self) -> V