pub struct PipelineDslGeneratorStep {
pub id: NodeId,
pub mode: PipelineDslGeneratorMode,
pub branches: Vec<PipelineDslBranch>,
pub stages: Vec<PipelineDslGeneratorStage>,
pub pick: Option<PipelineDslSelectionSpec>,
pub arrange: Option<PipelineDslSelectionSpec>,
pub then_pick: Option<PipelineDslSelectionSpec>,
pub then_arrange: Option<PipelineDslSelectionSpec>,
pub count: Option<usize>,
pub constraints: Option<PipelineDslGeneratorConstraints>,
pub tail: Vec<PipelineDslStep>,
pub metadata: BTreeMap<String, Value>,
}Fields§
§id: NodeId§mode: PipelineDslGeneratorMode§branches: Vec<PipelineDslBranch>§stages: Vec<PipelineDslGeneratorStage>§pick: Option<PipelineDslSelectionSpec>§arrange: Option<PipelineDslSelectionSpec>§then_pick: Option<PipelineDslSelectionSpec>§then_arrange: Option<PipelineDslSelectionSpec>§count: Option<usize>§constraints: Option<PipelineDslGeneratorConstraints>CONSTRAINED operator generators (ADR-17 1a + 1b): _mutex_/_requires_/_exclude_ over the
generator’s OPERATOR-CONTENT (its branch/option ids, the operator classes nirs4all references).
Applied during sequence-build so the operator dimension carries only the pruned survivor set
(see expand_or_generator_sequences). ADDITIVE:
skipped when None, so a constraint-free generator serializes byte-identically.
tail: Vec<PipelineDslStep>A FIXED tail sub-sequence appended to EVERY expanded survivor (after pick/arrange + the
_mutex_/_requires_/_exclude_ prune + the count truncate). The CATCH-22 fix for a
MODEL-TERMINATED constrained/pick operator generator (ADR-17 item 5 slice B): a constrained
_or_-pick / _cartesian_ survivor is a multi-operator SEQUENCE, and the downstream model must
terminate it EXACTLY ONCE (not once per picked branch). The host carries that downstream model
(+ any y_processing) here, so expand_*_generator_sequences appends it to each pruned survivor
— making compile_operator_variant_models (and the graph compile, which shares
expand_generator_sequences) see model-terminated survivors that reuse the already-correct
constraint prune. The tail is NOT part of the operator-content member set (it is appended AFTER
the prune), so constraints + variant_label stay operator-only. ADDITIVE: empty by default, so a
tail-free generator (every pre-existing generator, including the constraint-free fusion path)
serializes + expands byte-identically.
metadata: BTreeMap<String, Value>Trait Implementations§
Source§impl Clone for PipelineDslGeneratorStep
impl Clone for PipelineDslGeneratorStep
Source§fn clone(&self) -> PipelineDslGeneratorStep
fn clone(&self) -> PipelineDslGeneratorStep
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 PipelineDslGeneratorStep
impl Debug for PipelineDslGeneratorStep
Source§impl<'de> Deserialize<'de> for PipelineDslGeneratorStep
impl<'de> Deserialize<'de> for PipelineDslGeneratorStep
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<PipelineDslGeneratorStep, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<PipelineDslGeneratorStep, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for PipelineDslGeneratorStep
impl PartialEq for PipelineDslGeneratorStep
Source§fn eq(&self, other: &PipelineDslGeneratorStep) -> bool
fn eq(&self, other: &PipelineDslGeneratorStep) -> bool
self and other values to be equal, and is used by ==.