pub enum BuildError {
OverlayCollision {
project: ProjectName,
task: TaskName,
sources: BTreeSet<DefinitionSource>,
},
UnresolvedReference {
bearing: TaskId,
reference: TaskRef,
source: ResolutionError,
},
SelfReference {
bearing: TaskId,
reference: TaskRef,
},
DepsWeakDepsOverlap {
bearing: TaskId,
overlap: TaskId,
},
Cycle {
nodes: BTreeSet<TaskId>,
},
LiteralOutputCollision {
path: String,
tasks: BTreeSet<TaskId>,
},
}Expand description
A single error encountered during build_task_graph.
Multiple instances are accumulated into BuildErrors per
DAG-011: a workspace with N broken references and M overlap
violations produces a BuildErrors with N + M + ...
entries, not the first one.
Variants§
OverlayCollision
More than one definition source supplies a body for the
(project, task) pair AND no unique winner exists under
the specialisation order (DAG-006). Surfaced from
crate::effective::compute_effective_tasks.
Fields
project: ProjectNameThe project the collision applies to.
sources: BTreeSet<DefinitionSource>Every contributing definition source for the pair.
UnresolvedReference
A task reference could not be resolved against the workspace. The bearing task identifies WHERE in the workspace the unresolved reference lives.
Fields
source: ResolutionErrorThe resolution failure mode.
SelfReference
A reference in deps or weakDeps resolved to the
bearing task itself (DAG-012). The whole reference is
rejected: no edges from it are added to the graph.
The legitimate way to fan out across siblings without
reaching the bearing is the sibling-modifier form
(^~:<task> or [<tag>]~:<task>, per REF-008).
DepsWeakDepsOverlap
A node resolved into BOTH deps and weakDeps of the
same bearing task (DAG-010). The two fields are
mutually exclusive by intent; the workspace MUST be
rejected.
Cycle
A strongly-connected component of size two or more in the
union of hard, soft, and producer-matching edges
(DAG-014). Length-one cycles (a single task whose
outputs intersect its own inputs per DAG-013) are
permitted; this variant covers only length-two-or-more
cycles.
Fields
LiteralOutputCollision
A literal output path is declared as an output by more
than one task (DAG-015). Glob-output overlaps are
deferred to runtime per DAG-016 and do NOT produce this
variant.
Trait Implementations§
Source§impl Clone for BuildError
impl Clone for BuildError
Source§fn clone(&self) -> BuildError
fn clone(&self) -> BuildError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BuildError
impl Debug for BuildError
Source§impl Display for BuildError
impl Display for BuildError
impl Eq for BuildError
Source§impl Error for BuildError
impl Error for BuildError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl ErrorCompat for BuildError
impl ErrorCompat for BuildError
Source§fn iter_chain(&self) -> ChainCompat<'_, '_>where
Self: AsErrorSource,
fn iter_chain(&self) -> ChainCompat<'_, '_>where
Self: AsErrorSource,
Error::source. Read moreSource§impl PartialEq for BuildError
impl PartialEq for BuildError
Source§fn eq(&self, other: &BuildError) -> bool
fn eq(&self, other: &BuildError) -> bool
self and other values to be equal, and is used by ==.