#[non_exhaustive]pub struct AppendFrameOutcome {
pub stream_id: String,
pub frame_count: u64,
pub summary_version: Option<u64>,
}Expand description
Outcome of append_frame().
RFC-012 §R7.2.1: canonical definition moved to
ff_core::backend::AppendFrameOutcome; this pub use shim
preserves the ff_sdk::task::AppendFrameOutcome path through the
0.4.x window. Existing consumers construct + match exhaustively
without change. The derive set widened from Clone, Debug to
Clone, Debug, PartialEq, Eq matching the FailOutcome precedent.
Outcome of an append_frame() call.
RFC-012 §R7.2.1: moved from ff_sdk::task::AppendFrameOutcome
to ff_core::backend::AppendFrameOutcome so it is nameable by the
EngineBackend::append_frame trait return. ff_sdk::task retains
a pub use shim preserving the ff_sdk::task::AppendFrameOutcome
path through 0.4.x.
Derive set matches the FailOutcome precedent
(Clone, Debug, PartialEq, Eq). Not #[non_exhaustive]:
construction is internal to the backend today (parser in
ff-backend-valkey), and no external constructors are anticipated
(consumer-shape evidence per §R7.2.1 / MN3).
stream_id: String is a stable shape commitment — a future typed
StreamId newtype would be its own breaking change (§R7.5.6 / MD2).
RFC-015 §9 made this type #[non_exhaustive] so the new
summary_version: Option<u64> field (populated only for
StreamMode::DurableSummary appends) can land additively and
future per-mode outcome fields can follow. Construct via
Self::new + the chainable setters; cross-crate consumers cannot
use struct-literal construction.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.stream_id: StringValkey Stream entry ID assigned to this frame (e.g. 1234567890-0).
frame_count: u64Total frame count in the stream after this append.
summary_version: Option<u64>Rolling summary version after the delta applied, populated
only for StreamMode::DurableSummary appends (RFC-015 §3.3
step 6). None for StreamMode::Durable /
StreamMode::BestEffortLive appends — callers that need
“total deltas applied” read this field.
Implementations§
Source§impl AppendFrameOutcome
impl AppendFrameOutcome
Sourcepub fn new(stream_id: impl Into<String>, frame_count: u64) -> AppendFrameOutcome
pub fn new(stream_id: impl Into<String>, frame_count: u64) -> AppendFrameOutcome
Build an outcome with the mandatory stream_id / frame_count
fields. summary_version defaults to None — call
Self::with_summary_version for StreamMode::DurableSummary
appends.
Sourcepub fn with_summary_version(self, version: u64) -> AppendFrameOutcome
pub fn with_summary_version(self, version: u64) -> AppendFrameOutcome
Attach a rolling summary version (RFC-015 §9).
Trait Implementations§
Source§impl Clone for AppendFrameOutcome
impl Clone for AppendFrameOutcome
Source§fn clone(&self) -> AppendFrameOutcome
fn clone(&self) -> AppendFrameOutcome
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AppendFrameOutcome
impl Debug for AppendFrameOutcome
Source§impl Default for AppendFrameOutcome
impl Default for AppendFrameOutcome
Source§fn default() -> AppendFrameOutcome
fn default() -> AppendFrameOutcome
Source§impl PartialEq for AppendFrameOutcome
impl PartialEq for AppendFrameOutcome
impl Eq for AppendFrameOutcome
impl StructuralPartialEq for AppendFrameOutcome
Auto Trait Implementations§
impl Freeze for AppendFrameOutcome
impl RefUnwindSafe for AppendFrameOutcome
impl Send for AppendFrameOutcome
impl Sync for AppendFrameOutcome
impl Unpin for AppendFrameOutcome
impl UnsafeUnpin for AppendFrameOutcome
impl UnwindSafe for AppendFrameOutcome
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§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