#[non_exhaustive]pub enum ReductionError {
Limits(PlanLimitError),
UnknownOperation {
act: ActId,
operation: OperationKey,
},
InvalidArguments {
act: ActId,
error: SchemaValidationError,
},
CaseNotLoaded {
act: ActId,
},
InconsistentPlan {
detail: String,
},
Hash,
DuplicateOperation {
operation: OperationKey,
},
Contradiction {
first: ActId,
second: ActId,
},
CommandBudgetExceeded {
limit: usize,
actual: usize,
},
}Expand description
The whole-turn reducer could not produce a plan (spec §13).
The wire form is adjacently tagged ({"kind": ..., "detail": ...}): several
variants wrap another tagged error, and an internal tag would write two
kind keys into one object, so the outer variant was lost on the way back.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Limits(PlanLimitError)
Plan limits were exceeded.
UnknownOperation
An act names an operation not present in the catalog.
InvalidArguments
An act’s arguments do not satisfy the operation’s input schema.
CaseNotLoaded
An act references a case view that is not in the context.
InconsistentPlan
The produced plan is inconsistent (missing act results, dangling refs).
Hash
Hashing the plan failed.
DuplicateOperation
Two act definitions were offered under the same operation key, so one would silently shadow the other.
Fields
operation: OperationKeyThe repeated key.
Contradiction
Two acts contradict each other and no precedence rule applies.
CommandBudgetExceeded
The turn compiled more commands than the runtime is configured to execute.
The whole turn is refused rather than a prefix executed: a plan that runs half of what the user asked for is exactly the silent partial application I10 and I11 exist to prevent.
Trait Implementations§
Source§impl Clone for ReductionError
impl Clone for ReductionError
Source§impl Debug for ReductionError
impl Debug for ReductionError
Source§impl<'de> Deserialize<'de> for ReductionError
impl<'de> Deserialize<'de> for ReductionError
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for ReductionError
impl Display for ReductionError
impl Eq for ReductionError
Source§impl Error for ReductionError
impl Error for ReductionError
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 ErrorClassification for ReductionError
impl ErrorClassification for ReductionError
Source§fn effect_may_have_happened(&self) -> bool
fn effect_may_have_happened(&self) -> bool
Source§fn user_message_key(&self) -> &'static str
fn user_message_key(&self) -> &'static str
Source§fn severity(&self) -> ErrorSeverity
fn severity(&self) -> ErrorSeverity
Source§fn reconciliation_required(&self) -> bool
fn reconciliation_required(&self) -> bool
Source§impl From<PlanLimitError> for ReductionError
impl From<PlanLimitError> for ReductionError
Source§fn from(value: PlanLimitError) -> Self
fn from(value: PlanLimitError) -> Self
Source§impl From<ReductionError> for OrchestratorError
impl From<ReductionError> for OrchestratorError
Source§fn from(value: ReductionError) -> Self
fn from(value: ReductionError) -> Self
Source§impl PartialEq for ReductionError
impl PartialEq for ReductionError
Source§impl Serialize for ReductionError
impl Serialize for ReductionError
impl StructuralPartialEq for ReductionError
Auto Trait Implementations§
impl Freeze for ReductionError
impl RefUnwindSafe for ReductionError
impl Send for ReductionError
impl Sync for ReductionError
impl Unpin for ReductionError
impl UnsafeUnpin for ReductionError
impl UnwindSafe for ReductionError
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.