#[repr(u64)]pub enum FetchEndOfRange {
NonExistent = 140,
Unknown = 268,
}Expand description
The two Serialization Flags values draft-16 gives a meaning of their own instead of reading as a bit field, from Section 10.4.4 Table 4.
The bits of Serialization Flags are flags only “when less than 128”; Table 4
assigns two larger values, and of everything else at or above 128 the
section says “Any other value is a PROTOCOL_VIOLATION”. That is why
FetchObjectHeader::decode refuses an unassigned large value outright
rather than carrying it through as an unknown flag word — there is no
framing to parse behind it.
Both markers stand in for a span of Objects rather than one: Section 10.4.4.2 reads them as covering every Location between the previous serialized Object, if any, and this one, inclusive.
Variants§
NonExistent = 140
End of Non-Existent Range (0x8C): every Object in the covered span is known not to exist. Section 10.4.4.2 adds that a publisher SHOULD NOT use this except to split a span it will not serialize into the part known absent and the part whose status is unknown.
Unknown = 268
End of Unknown Range (0x10C): the status of every Object in the covered span is unknown.
Implementations§
Source§impl FetchEndOfRange
impl FetchEndOfRange
Sourcepub const ALL: &[FetchEndOfRange]
pub const ALL: &[FetchEndOfRange]
Both values Table 4 assigns, in ascending wire order.
This is exactly the set FetchEndOfRange::from_u64 accepts above the
flag range.
Sourcepub fn from_u64(v: u64) -> Option<Self>
pub fn from_u64(v: u64) -> Option<Self>
The Table 4 meaning of v, or None when v is a flag word (anything
below 128) or a large value the table leaves unassigned.
The two answers None covers are not the same thing, and callers must
not merge them: a flag word is ordinary framing, an unassigned large
value is a protocol violation. FetchObjectHeader::decode separates
them by testing the 128 boundary itself.
Trait Implementations§
Source§impl Clone for FetchEndOfRange
impl Clone for FetchEndOfRange
Source§fn clone(&self) -> FetchEndOfRange
fn clone(&self) -> FetchEndOfRange
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more