#[non_exhaustive]pub enum Divergence {
CaseSelection {
shadow: Vec<CaseKey>,
authoritative: Vec<CaseKey>,
},
ActsExtracted {
shadow: Vec<ActSummary>,
authoritative: Vec<ActSummary>,
},
Mutations {
shadow: Vec<MutationSummary>,
authoritative: Vec<MutationSummary>,
},
ClarificationVersusAction {
asked: Side,
clarifications: Vec<ClarificationSummary>,
mutations: Vec<MutationSummary>,
},
ClaimWithoutEvent {
claimant: Side,
class: ClaimClass,
},
RefusedUnresolvedTargetThatRan {
performed: MutationSummary,
reason: RefusalReason,
},
}Expand description
One way two paths disagreed about the same turn.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
CaseSelection
The two sides addressed different records.
ActsExtracted
The two sides read different acts out of the same turn.
Mutations
The two sides would run different mutations, for a reason the comparison cannot attribute on its own.
ClarificationVersusAction
One side asked the user something while the other acted.
Fields
clarifications: Vec<ClarificationSummary>What it asked.
mutations: Vec<MutationSummary>What the other side did instead.
ClaimWithoutEvent
One side stated an outcome that no committed event, on either side, backs.
Evidence from either side counts, because in a shadow stage only one side executes anything: a claim the authoritative path committed an event for is a backed claim, whoever else also made it. Only classes an event can back are checked — “you can see the card below” is backed by a persisted card and “I will notify you” by nothing at all, so neither is judged here.
RefusedUnresolvedTargetThatRan
This library refused a mutation because it could not tell which record was meant, and the existing path performed it anyway.
This is the asymmetry this module exists to carry, and it is a finding against the existing path: it chose one of several records the user might have meant.
Fields
performed: MutationSummaryThe mutation the existing path performed.
reason: RefusalReasonWhy this library would not.
Implementations§
Trait Implementations§
Source§impl Clone for Divergence
impl Clone for Divergence
Source§impl Debug for Divergence
impl Debug for Divergence
impl Eq for Divergence
Source§impl PartialEq for Divergence
impl PartialEq for Divergence
impl StructuralPartialEq for Divergence
Auto Trait Implementations§
impl Freeze for Divergence
impl RefUnwindSafe for Divergence
impl Send for Divergence
impl Sync for Divergence
impl Unpin for Divergence
impl UnsafeUnpin for Divergence
impl UnwindSafe for Divergence
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,
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.