Skip to main content

SubscribeEnd

Enum SubscribeEnd 

Source
pub enum SubscribeEnd {
    Open,
    EndOfGroup(u64),
    ThroughObject {
        end_group: u64,
        end_object: u64,
    },
}
Expand description

Where a subscription’s range stops, said once in a way no draft can read two ways.

A SUBSCRIBE that names a start location may also name an end, and the drafts spell that end three different ways. Draft-07 Section 6.4 gives the AbsoluteRange filter an End Group and an End Object, with FETCH’s own conventions — “the end Object ID, plus 1. A value of 0 means the entire group is requested.” Draft-08 deleted the End Object and redefined the End Group as “the end Group ID, inclusive”, and drafts 09 through 19 kept it that way. Draft-20 Section 5.1.2 then brought an end Object back, as the fourth field of a LOCATION_FILTER whose range is inclusive at both ends with no plus one anywhere.

One end_object: u64 at this boundary would therefore have meant the last Object on two drafts, the last Object plus one on one of them, and nothing at all on the other eleven — which is FetchEnd’s problem a second time, in a place where it is worse: there, every draft could at least carry the field.

So SubscribeEnd::EndOfGroup is the end every draft with a range can express, and SubscribeEnd::ThroughObject is the one only draft-07 and drafts 20 and 21 can. The twelve drafts between them refuse it rather than rounding it up to the whole group, because a subscription that quietly covers more than it asked for is one whose extra objects look like a relay ignoring the range.

Variants§

§

Open

No end at all — the AbsoluteStart filter. Every draft has it.

On draft-20 alone this is not expressible from the start location {0, 0}; see SubscribeRange::location_filter_draft20 for the collision and for the two ways round it.

§

EndOfGroup(u64)

Through the whole of this Group, however many Objects it turns out to hold. The Group is absolute on every draft, including the ones that put a delta on the wire.

§

ThroughObject

Through this Object of this Group, inclusive — it is the last Object the subscription covers, and the range holds it.

Expressible on draft-07 and draft-20 and on nothing between them. See SubscribeEnd for why those two and not the twelve in the middle, and SubscribeRange::inline_end_location for the plus one draft-07 needs and draft-20 must not have.

Fields

§end_group: u64

The Group the range ends in, absolute.

§end_object: u64

The last Object of end_group the range covers.

Trait Implementations§

Source§

impl Clone for SubscribeEnd

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for SubscribeEnd

Source§

impl Debug for SubscribeEnd

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for SubscribeEnd

Source§

impl PartialEq for SubscribeEnd

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SubscribeEnd

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more