pub struct PlaneFetch {
pub events: Vec<Event>,
pub answered: usize,
pub attempted: usize,
}Expand description
A plane fetch plus how much of the relay set actually answered it.
One honest relay is enough to RUN Concord: a valid, sealed, signed event is proof on its own, and no amount of corroboration adds to it. So coverage never gates accepting data — a single relay’s answer is taken whole.
It gates exactly one thing: concluding that something is absent. An empty
result from four relays where three timed out says nothing; the same empty
result where all four answered is real evidence. Both used to be a bare
Vec<Event>, indistinguishable, so every “it’s gone” decision in the protocol
was really “nobody who happened to reply mentioned it”.
Coverage is always relative to the REACHABLE set, never an absolute quorum: a one-relay community reports 1/1 and its absences are as confirmed as they can ever be. Nothing halts for want of relays.
Fields§
§events: Vec<Event>§answered: usizeRelays that resolved successfully (an empty EOSE counts — that is a real answer).
attempted: usizeRelays attempted.
Implementations§
Source§impl PlaneFetch
impl PlaneFetch
Trait Implementations§
Source§impl Clone for PlaneFetch
impl Clone for PlaneFetch
Source§fn clone(&self) -> PlaneFetch
fn clone(&self) -> PlaneFetch
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for PlaneFetch
impl RefUnwindSafe for PlaneFetch
impl Send for PlaneFetch
impl Sync for PlaneFetch
impl Unpin for PlaneFetch
impl UnsafeUnpin for PlaneFetch
impl UnwindSafe for PlaneFetch
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<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