#[non_exhaustive]pub struct FeedFrame<'a> {
pub offset: u64,
pub bytes: &'a [u8],
}Expand description
One decoded feed entry: the offset plus the frame’s wire bytes
(envelope + offset + RESP argv — same encoding replicas consume;
crate::wire::decode_frame parses it).
use kevy_replicate::feed::{FeedPosition, FeedSource};
use kevy_replicate::source::ReplicationSource;
let mut feed = FeedSource::new(1, ReplicationSource::new(1 << 20));
let set = kevy_resp::Argv::from(vec![b"SET".to_vec(), b"k".to_vec(), b"v".to_vec()]);
feed.source_mut().push_mutation(&set);
let frames = feed.read(FeedPosition::new(1, 0), 10).expect("offset 0 is buffered");
let (decoded, _) = kevy_replicate::wire::decode_frame(frames[0].bytes)?;
assert_eq!((frames[0].offset, decoded.argv), (0, set));Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.offset: u64Offset the source assigned at push time.
use kevy_replicate::feed::{FeedPosition, FeedSource};
use kevy_replicate::source::ReplicationSource;
let mut feed = FeedSource::new(1, ReplicationSource::new(1 << 20));
let set = kevy_resp::Argv::from(vec![b"SET".to_vec(), b"k".to_vec(), b"v".to_vec()]);
for _ in 0..3 {
feed.source_mut().push_mutation(&set);
}
let frames = feed.read(FeedPosition::new(1, 1), 10)?;
assert_eq!(frames.iter().map(|f| f.offset).collect::<Vec<_>>(), [1, 2]);bytes: &'a [u8]Wire-encoded frame bytes.
use kevy_replicate::feed::{FeedPosition, FeedSource};
use kevy_replicate::source::ReplicationSource;
let mut feed = FeedSource::new(1, ReplicationSource::new(1 << 20));
let set = kevy_resp::Argv::from(vec![b"SET".to_vec(), b"k".to_vec(), b"v".to_vec()]);
feed.source_mut().push_mutation(&set);
let frames = feed.read(FeedPosition::new(1, 0), 1)?;
assert_eq!(frames[0].bytes, kevy_replicate::wire::encode_frame(0, &set));Trait Implementations§
impl<'a> Copy for FeedFrame<'a>
impl<'a> Eq for FeedFrame<'a>
impl<'a> StructuralPartialEq for FeedFrame<'a>
Auto Trait Implementations§
impl<'a> Freeze for FeedFrame<'a>
impl<'a> RefUnwindSafe for FeedFrame<'a>
impl<'a> Send for FeedFrame<'a>
impl<'a> Sync for FeedFrame<'a>
impl<'a> Unpin for FeedFrame<'a>
impl<'a> UnsafeUnpin for FeedFrame<'a>
impl<'a> UnwindSafe for FeedFrame<'a>
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
Mutably borrows from an owned value. Read more