Struct ArrayRangeSet
pub struct ArrayRangeSet(/* private fields */);Available on crate feature
quic only.Expand description
A set of u64 values optimized for long runs and random insert/delete/contains
ArrayRangeSet uses an array representation, where each array entry represents
a range.
The array-based RangeSet provides 2 benefits:
- There exists an inline representation, which avoids the need of heap allocating ACK ranges for SentFrames for small ranges.
- Iterating over ranges should usually be faster since there is only a single cache-friendly contiguous range.
ArrayRangeSet is especially useful for tracking ACK ranges where the amount
of ranges is usually very low (since ACK numbers are in consecutive fashion
unless reordering or packet loss occur).
Implementations§
§impl ArrayRangeSet
impl ArrayRangeSet
pub fn new() -> ArrayRangeSet
pub fn iter(&self) -> impl DoubleEndedIterator
pub fn elts(&self) -> impl Iterator<Item = u64>
pub fn len(&self) -> usize
pub fn insert_one(&mut self, x: u64) -> bool
pub fn insert(&mut self, x: Range<u64>) -> bool
pub fn remove(&mut self, x: Range<u64>) -> bool
pub fn is_empty(&self) -> bool
pub fn pop_min(&mut self) -> Option<Range<u64>>
pub fn max(&self) -> Option<u64>
Trait Implementations§
§impl Clone for ArrayRangeSet
impl Clone for ArrayRangeSet
§fn clone(&self) -> ArrayRangeSet
fn clone(&self) -> ArrayRangeSet
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read more§impl Debug for ArrayRangeSet
impl Debug for ArrayRangeSet
§impl Default for ArrayRangeSet
impl Default for ArrayRangeSet
§fn default() -> ArrayRangeSet
fn default() -> ArrayRangeSet
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for ArrayRangeSet
impl RefUnwindSafe for ArrayRangeSet
impl Send for ArrayRangeSet
impl Sync for ArrayRangeSet
impl Unpin for ArrayRangeSet
impl UnsafeUnpin for ArrayRangeSet
impl UnwindSafe for ArrayRangeSet
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Create a new
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more