Skip to main content

Verdict

Enum Verdict 

Source
pub enum Verdict {
    Valid,
    Stale {
        replacement_digest: Option<String>,
    },
    Gone,
    Unknown,
}
Expand description

A provider’s answer for one frame (docs/context-reuse.md §4).

Serializes as an internally-tagged object keyed on status, so a verdict is self-describing on the wire and gains variants without breaking parsers: {"status": "valid"}, {"status": "stale", "replacement_digest": "sha256:…"}, {"status": "gone"}, {"status": "unknown"}.

Variants§

§

Valid

The frame’s content is unchanged: the digest the host presented matches the provider’s current digest for that frame. The host MAY keep reusing the body it already holds.

§

Stale

The frame still exists but its content changed — the presented digest no longer matches. The host MUST NOT keep serving the body it holds.

replacement_digest is the provider’s current digest for the frame, offered so a host can tell “changed again since I last looked” from “changed to something I already fetched” without a round trip. It is optional: a provider that knows the content differs but not what it is now still answers stale honestly. It is a digest, never a body — the host re-queries if it wants the new content.

Fields

§replacement_digest: Option<String>
§

Gone

The frame no longer exists — the source was deleted, or the provider no longer serves it. The host MUST drop it, and re-querying this identity is pointless.

§

Unknown

The provider cannot say. It may never have served this frame, may have lost the history needed to compare digests (a rebuilt index), or may not recognize the identity. The host MUST NOT treat this as validity — an unverifiable frame is re-queried, never reused on a shrug.

Implementations§

Source§

impl Verdict

Source

pub fn permits_reuse(&self) -> bool

Whether a host may keep reusing the frame body it already holds. Only Valid — reuse requires a positive answer, never the absence of a negative one (docs/context-reuse.md §4, requirement V2).

Source

pub fn warrants_requery(&self) -> bool

Whether re-querying the provider could recover usable content. True for Stale (content exists, it changed) and Unknown (the provider couldn’t say, so ask properly). False for Gone — the frame is not there to re-fetch — and for Valid, which needs no re-query at all.

Source

pub fn status(&self) -> &'static str

The verdict’s wire name, for reports and log lines.

Trait Implementations§

Source§

impl Clone for Verdict

Source§

fn clone(&self) -> Verdict

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Verdict

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Verdict

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Verdict

Source§

impl PartialEq for Verdict

Source§

fn eq(&self, other: &Verdict) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Verdict

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Verdict

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.