pub enum Applicability {
Applicable,
Undecided {
decision: Key,
option: String,
},
NotSelected {
decision: Key,
option: String,
selected: String,
},
AwaitingChoice {
predecessor: Key,
},
Stranded {
dependency: DependencyId,
predecessor: Key,
},
EmptyJoin,
AllChildrenExcluded {
decisions: Vec<Key>,
},
ChildrenStranded {
child: Key,
},
}Expand description
Whether work belongs to the active execution graph, derived from decisions and constraints.
Only Applicable work can take lifecycle transitions or enter the remaining schedule. The
state is recomputed from authoritative decisions, conditions, join policies and unwaived
constraints; it is never persisted.
Variants§
Applicable
Every condition names the selected option and every prerequisite can proceed.
Undecided
A condition on the work or a containing package awaits an open decision.
Fields
NotSelected
A decision selected a different option than a condition on the work or a container.
Fields
AwaitingChoice
A prerequisite is undecided or itself waits for a choice, so the work’s place in the plan is not yet committed. For a work package with no applicable child, the prerequisite is a child that still waits for a choice.
Stranded
An ordinary constraint from not-selected work, or from work that can never proceed, never releases; only a reviewed plan change can let this work proceed.
Fields
dependency: DependencyIdConstraint that can never be released.
EmptyJoin
Every branch into an active-branch join was excluded and the join does not permit that.
AllChildrenExcluded
Every child of this work package was excluded by a choice, so the package is excluded as well: it holds no work that could complete it.
ChildrenStranded
No child of this work package is applicable and at least one that a choice did not exclude is stranded or an empty join, so the package can never complete without a plan change.
Implementations§
Source§impl Applicability
impl Applicability
Sourcepub fn is_applicable(&self) -> bool
pub fn is_applicable(&self) -> bool
Whether the work belongs to the active graph.
Sourcepub fn is_not_selected(&self) -> bool
pub fn is_not_selected(&self) -> bool
Whether a choice excluded the work from the plan’s scope, directly or through every child of a work package.
Sourcepub fn condition_selected(&self) -> bool
pub fn condition_selected(&self) -> bool
Whether the work’s own conditions are selected, so its lifecycle may count as completion.