pub struct MessageId { /* private fields */ }Expand description
Unique identifier for a Plumtree message.
Composed of:
- 8 bytes: timestamp (milliseconds since UNIX epoch)
- 8 bytes: node-local counter
- 8 bytes: random component
This provides uniqueness across nodes and time while being efficient to generate and compare.
Implementations§
Source§impl MessageId
impl MessageId
Sourcepub const ENCODED_SIZE: usize = 24
pub const ENCODED_SIZE: usize = 24
Size of the message ID in bytes when encoded.
Sourcepub const fn from_parts(timestamp: u64, counter: u64, random: u64) -> Self
pub const fn from_parts(timestamp: u64, counter: u64, random: u64) -> Self
Create a message ID from raw components (for testing/deserialization).
Sourcepub fn encode_to_bytes(&self) -> Bytes
pub fn encode_to_bytes(&self) -> Bytes
Encode the message ID into a new Bytes buffer.
Sourcepub fn decode(buf: &mut impl Buf) -> Option<Self>
pub fn decode(buf: &mut impl Buf) -> Option<Self>
Decode a message ID from bytes.
Returns None if the buffer is too small.
Sourcepub fn decode_from_slice(data: &[u8]) -> Option<Self>
pub fn decode_from_slice(data: &[u8]) -> Option<Self>
Decode a message ID from a byte slice.
Trait Implementations§
Source§impl Ord for MessageId
impl Ord for MessageId
Source§impl PartialOrd for MessageId
impl PartialOrd for MessageId
impl Copy for MessageId
impl Eq for MessageId
impl StructuralPartialEq for MessageId
Auto Trait Implementations§
impl Freeze for MessageId
impl RefUnwindSafe for MessageId
impl Send for MessageId
impl Sync for MessageId
impl Unpin for MessageId
impl UnwindSafe for MessageId
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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> ⓘ
Converts
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> ⓘ
Converts
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