pub struct LatestItem<T> {
pub value: T,
pub generation: u32,
pub skipped: u32,
}Expand description
A value claimed from a LatestBuf.
Fields§
§value: TComplete value copied from the claimed publication.
generation: u32Non-zero transport generation assigned when the value was published.
skipped: u32Publications assigned after the prior take and before this one.
One formula in every case (contract C3): the wrap-aware generation
distance from the previously taken value to this one, minus one,
saturated at zero. Exact while fewer than u32::MAX non-zero
generations — one full wrap span — separate two successful takes.
Beyond that span the same formula under-counts: by whole spans
while the endpoints differ, and a gap of exactly one or more full
cycles reports zero — a silent under-count, accepted and
documented by decision D1 (contract non-promise X6).
The boundary is a rate × take-interval property: it is crossed
exactly when a full span of publications occurs between two
successful takes — whether because the consumer stopped (fault)
or because the deployment deliberately takes rarely against a
fast producer (design). At representative rates that is roughly
49.7 days between takes at continuous 1 kHz publishing, or
72 minutes at 1 MHz; the crate bounds neither rate nor cadence,
so this arithmetic is the caller’s to run. The channel
deliberately does not detect the crossing; detection would price
wider hot-path state into every operation and still could not
recover the lost count. If the count itself is the requirement
(audit, metering, loss accounting), carry a wider
producer-assigned sequence inside T; if consumer liveness is,
use a watchdog — each catches its condition sooner and correctly.
Trait Implementations§
Source§impl<T: Clone> Clone for LatestItem<T>
impl<T: Clone> Clone for LatestItem<T>
Source§fn clone(&self) -> LatestItem<T>
fn clone(&self) -> LatestItem<T>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more