pub struct RangeBounds { /* private fields */ }Expand description
The half-open [lower, upper) partition a range owns.
Half-open bounds tile the keyspace without gaps or double-cover: adjacent
ranges share a boundary key that belongs to exactly one of them. lower must
be strictly below upper, so an empty or inverted range cannot be
constructed.
Implementations§
Source§impl RangeBounds
impl RangeBounds
Sourcepub fn new(
lower: RangeBound,
upper: RangeBound,
) -> Result<RangeBounds, RangeBoundsError>
pub fn new( lower: RangeBound, upper: RangeBound, ) -> Result<RangeBounds, RangeBoundsError>
Bounds from an explicit [lower, upper) pair. Errors if the range would
be empty or inverted (lower >= upper).
Sourcepub fn full() -> RangeBounds
pub fn full() -> RangeBounds
The whole keyspace, [Min, Max) — a single range covering a collection.
pub fn lower(&self) -> &RangeBound
pub fn upper(&self) -> &RangeBound
Sourcepub fn contains(&self, key: &[u8]) -> bool
pub fn contains(&self, key: &[u8]) -> bool
Does key fall inside this half-open range? Lower bound inclusive, upper
bound exclusive — the routing predicate.
Sourcepub fn overlaps(&self, other: &RangeBounds) -> bool
pub fn overlaps(&self, other: &RangeBounds) -> bool
Do these two ranges share any key? Used to keep a collection’s ranges non-overlapping so routing resolves to exactly one owner.
Sourcepub fn split_at(
&self,
at: &[u8],
) -> Result<(RangeBounds, RangeBounds), RangeBoundsError>
pub fn split_at( &self, at: &[u8], ) -> Result<(RangeBounds, RangeBounds), RangeBoundsError>
Split this [lower, upper) range at at into a lower child
[lower, at) and an upper child [at, upper). The split point must fall
strictly inside the range (lower < at < upper); a point at or
outside a bound would carve off an empty child and is rejected with
RangeBoundsError. The two children tile the original exactly — no gap,
no overlap — which is what lets a split-and-move shrink
the retained child and create the moved child without making routing
ambiguous.
Trait Implementations§
Source§impl Clone for RangeBounds
impl Clone for RangeBounds
Source§fn clone(&self) -> RangeBounds
fn clone(&self) -> RangeBounds
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RangeBounds
impl Debug for RangeBounds
impl Eq for RangeBounds
Source§impl PartialEq for RangeBounds
impl PartialEq for RangeBounds
Source§fn eq(&self, other: &RangeBounds) -> bool
fn eq(&self, other: &RangeBounds) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for RangeBounds
Auto Trait Implementations§
impl Freeze for RangeBounds
impl RefUnwindSafe for RangeBounds
impl Send for RangeBounds
impl Sync for RangeBounds
impl Unpin for RangeBounds
impl UnsafeUnpin for RangeBounds
impl UnwindSafe for RangeBounds
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request