pub enum GateOutcome {
Approved {
passes: usize,
of: usize,
seal: Sealed,
},
ContractFailed {
detail: String,
seal: Sealed,
},
PanelRejected {
passes: usize,
required: usize,
dissent: Vec<Verdict>,
seal: Sealed,
},
PanelIncomplete {
answered: usize,
required: usize,
unreachable: Vec<Unreachable>,
seal: Sealed,
},
}Expand description
What the panel found, and what follows from it.
Every variant carries Sealed, which only this module can construct, so
decide is the only way to obtain a GateOutcome. Without that, any
caller could hand back Approved having run no contract and asked no
reviewer — and a gate that a caller can mint is not a gate. The first draft
of this had exactly that hole: the tick’s injected run_coder returned a
GateOutcome directly and decide had no callers at all.
Variants§
Approved
Deterministic checks passed and the panel cleared it.
ContractFailed
The deterministic gate failed. The panel is not consulted at all: a change that does not build is not a question for reviewers.
PanelRejected
Reviewers were reached but did not clear it.
PanelIncomplete
Too few reviewers answered to reach a threshold at all.
Implementations§
Trait Implementations§
Source§impl Clone for GateOutcome
impl Clone for GateOutcome
Source§impl Debug for GateOutcome
impl Debug for GateOutcome
impl Eq for GateOutcome
Source§impl PartialEq for GateOutcome
impl PartialEq for GateOutcome
impl StructuralPartialEq for GateOutcome
Auto Trait Implementations§
impl Freeze for GateOutcome
impl RefUnwindSafe for GateOutcome
impl Send for GateOutcome
impl Sync for GateOutcome
impl Unpin for GateOutcome
impl UnsafeUnpin for GateOutcome
impl UnwindSafe for GateOutcome
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
Mutably borrows from an owned value. Read more
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<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
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
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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> ⓘ
Converts
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> ⓘ
Converts
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