pub struct BlobProbeReport {
pub target: String,
pub tier: String,
pub asked: Vec<String>,
pub not_probed: Option<String>,
pub holders: Vec<BlobHolder>,
pub answered: usize,
pub roots: Vec<String>,
pub declared_by: Vec<String>,
}Expand description
Who holds an artifact, and at which root (RFC 07 §2.5).
Fields§
§target: StringThe target as spelled back: artifact/<id>, tree/<hex>, …
tier: String§asked: Vec<String>The selectors actually asked. A probe’s coverage claim is exactly this list and no wider (RFC 09 §5.1 O5).
not_probed: Option<String>Why nothing was asked, when nothing was — a store algorithm the reference client does not speak, chiefly, now that every tier has a probe endpoint (RFC 07 §2.5, v1.17). Renders instead of a holder list; an unasked probe must never read as “no holders”.
holders: Vec<BlobHolder>§answered: usize§roots: Vec<String>Distinct content roots across holders.
More than one is a finding, not a tie-break: the id is a name and RFC 07 §2.1’s root is what disambiguates it, so a caller facing two roots must pin one rather than trust whoever answered first.
declared_by: Vec<String>Producers whose slice declares this tier — a capability claim, carried so a silent probe stays legible (RFC 05 §3.1: silence is not a verdict, and “nobody declares this” and “the declarers are down” are different silences).
Trait Implementations§
Source§impl Clone for BlobProbeReport
impl Clone for BlobProbeReport
Source§fn clone(&self) -> BlobProbeReport
fn clone(&self) -> BlobProbeReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BlobProbeReport
impl Debug for BlobProbeReport
Auto Trait Implementations§
impl Freeze for BlobProbeReport
impl RefUnwindSafe for BlobProbeReport
impl Send for BlobProbeReport
impl Sync for BlobProbeReport
impl Unpin for BlobProbeReport
impl UnsafeUnpin for BlobProbeReport
impl UnwindSafe for BlobProbeReport
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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<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