pub struct AdoptionObservation {
pub source: String,
pub collection: String,
pub repos: u64,
pub truncated: bool,
pub observed_at: String,
}Expand description
One relay’s answer to “how many repos hold this collection?”.
Fields§
§source: StringThe normalized relay base URL this number came from (the
network_stat.source column).
collection: StringThe collection NSID that was counted.
repos: u64Repos the relay has indexed as holding the collection — a lower bound on network adoption, not a census (module doc, rule 3). Whether the relay’s index counts a repo that has since deleted its records is unverified, which is why this says “indexed as holding” and not “holds”.
truncated: boolThe walk stopped early, so repos is a floor of a lower bound: read it
as “at least N”.
Set by EITHER bound — the MAX_PAGES cap (a pathological relay) or the
DEFAULT_HOST_BUDGET wall-clock budget (a merely slow one). They mean
the same thing to a consumer, which is why they share one flag.
observed_at: StringWhen the observation was taken (RFC3339, UTC, seconds precision — the same shape every other TEXT timestamp in the DB uses).
Trait Implementations§
Source§impl Clone for AdoptionObservation
impl Clone for AdoptionObservation
Source§impl Debug for AdoptionObservation
impl Debug for AdoptionObservation
impl Eq for AdoptionObservation
Source§impl PartialEq for AdoptionObservation
impl PartialEq for AdoptionObservation
impl StructuralPartialEq for AdoptionObservation
Auto Trait Implementations§
impl Freeze for AdoptionObservation
impl RefUnwindSafe for AdoptionObservation
impl Send for AdoptionObservation
impl Sync for AdoptionObservation
impl Unpin for AdoptionObservation
impl UnsafeUnpin for AdoptionObservation
impl UnwindSafe for AdoptionObservation
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§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
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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