#[non_exhaustive]pub enum ExecResult {
PerformedChange,
WouldPerformChange,
AlreadySatisfied,
NoOp,
#[non_exhaustive] Skipped {
pack_path: PathBuf,
actions_hash: String,
},
}Expand description
Coarse-grained outcome of a single step.
Marked #[non_exhaustive] so future milestones (M4 plugin system,
lockfile idempotency) can introduce additional outcomes without breaking
downstream consumers. External match sites must include a _ arm.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
PerformedChange
Wet-run executor actually mutated state.
WouldPerformChange
Planner determined the change would happen in a wet run.
AlreadySatisfied
Target state already matches (e.g. symlink already points at the right src). Idempotent short-circuit.
NoOp
Action was a no-op: when.os branch not taken, or require failed
with on_fail: skip | warn. Not an error.
#[non_exhaustive]Skipped
Action was deliberately skipped by a caller-level policy — in M4 the
trigger is a lockfile actions_hash match on the pack. The variant
carries the pack path and the matched hash so downstream audit
tooling can render “pack X at hash Y was skipped” without having to
thread extra context.
Marked #[non_exhaustive] at the variant level so future audit
fields (e.g. skipped_at, policy_source) can be added without
breaking downstream struct-pattern match sites.
Fields
This variant is marked as non-exhaustive
Trait Implementations§
Source§impl Clone for ExecResult
impl Clone for ExecResult
Source§fn clone(&self) -> ExecResult
fn clone(&self) -> ExecResult
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExecResult
impl Debug for ExecResult
Source§impl PartialEq for ExecResult
impl PartialEq for ExecResult
impl Eq for ExecResult
impl StructuralPartialEq for ExecResult
Auto Trait Implementations§
impl Freeze for ExecResult
impl RefUnwindSafe for ExecResult
impl Send for ExecResult
impl Sync for ExecResult
impl Unpin for ExecResult
impl UnsafeUnpin for ExecResult
impl UnwindSafe for ExecResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more