Skip to main content

BodyStmt

Enum BodyStmt 

Source
pub enum BodyStmt {
    Record(RecordStmt),
    Done {
        binding: String,
        replacement: Option<RecordStmt>,
        span: SourceSpan,
    },
    Effect(EffectStmt),
    After(AfterBlock),
    Region(RegionBlock),
    Case(CaseBlock),
    Terminal(TerminalStmt),
    Cancel {
        binding: String,
        span: SourceSpan,
    },
    Milestone {
        name: String,
        payload_class: Option<String>,
        fields: Vec<FieldAssign>,
        span: SourceSpan,
    },
    Redact {
        source: String,
        keep: Vec<String>,
        binding: String,
        span: SourceSpan,
    },
}

Variants§

§

Record(RecordStmt)

§

Done

done x / done x -> record ... — marks a fact terminal, optionally replacing it with a record.

Fields

§binding: String
§replacement: Option<RecordStmt>
§

Effect(EffectStmt)

§

After(AfterBlock)

§

Region(RegionBlock)

§

Case(CaseBlock)

§

Terminal(TerminalStmt)

§

Cancel

Fields

§binding: String
§

Milestone

emit milestone "<name>" of <PayloadClass> { fields } (Family C, child-milestone lifecycle): a synchronous durable fact the child workflow projects mid-flight for an observing parent. It is NOT an async effect — it derives a workflow.milestone:<name> fact in the child’s own base at rule-commit time, mirroring record. payload_class types the parent’s after p reaches "<name>" as m binding. See spec/decision-records/discriminated-families-design.md section 7.3.

Fields

§name: String
§payload_class: Option<String>
§

Redact

redact <source> keep [<field>, …] as <out> (DR-0027 redact): an explicit, audited PROJECTION of the record bound to source onto the kept field set, producing a new binding out. It is the information-flow crossing the rule-level opaque join box is refined at — the projection carries only the labels of the KEPT fields (the dropped fields are non-interfering, proven in models/lean/Whipple/Redaction.lean: canRead_redact). It is NOT an async effect: it is a synchronous, pure restructure (like a record projection), so it never becomes an IrEffectKind — it is rule metadata the IFC checker and the runtime projection both read. out’s type is the source schema projected to the kept fields (redact.<rule>.<out>); accessing a dropped field on out is a type error.

Fields

§source: String
§keep: Vec<String>
§binding: String

Trait Implementations§

Source§

impl Clone for BodyStmt

Source§

fn clone(&self) -> BodyStmt

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 BodyStmt

Source§

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

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

impl Eq for BodyStmt

Source§

impl PartialEq for BodyStmt

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for BodyStmt

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.