Struct nats::jetstream::IntervalTree[][src]

pub struct IntervalTree { /* fields omitted */ }

Records ranges of acknowledged IDs for low-memory deduplication.

Implementations

impl IntervalTree[src]

pub fn mark_processed(&mut self, id: u64) -> bool[src]

Mark this ID as being processed. Returns true if this ID was not already marked as processed.

pub fn already_processed(&self, id: u64) -> bool[src]

Returns true if this ID has already been processed.

pub fn min(&self) -> Option<u64>[src]

Returns the minimum ID marked as processed, if any have been.

Examples

use nats::jetstream::IntervalTree;

let mut it = IntervalTree::default();

it.mark_processed(56);
it.mark_processed(259);

assert_eq!(it.min(), Some(56));

pub fn max(&self) -> Option<u64>[src]

Returns the maximum ID marked as processed, if any have been.

Examples

use nats::jetstream::IntervalTree;

let mut it = IntervalTree::default();

it.mark_processed(56);
it.mark_processed(259);

assert_eq!(it.max(), Some(259));

pub fn gaps(&self) -> impl '_ + DoubleEndedIterator<Item = Range<u64>>[src]

Returns a DoubleEndedIterator over non-contiguous gaps that have not been processed yet.

Examples

use std::ops::Range;

use nats::jetstream::IntervalTree;

let mut it = IntervalTree::default();

for id in 56..=122 {
    it.mark_processed(id);
}

for id in 222..=259 {
    it.mark_processed(id);
}


let gaps: Vec<Range<u64>> = it.gaps().collect();

assert_eq!(gaps, vec![Range { start: 123, end: 222 }]);

Trait Implementations

impl Default for IntervalTree[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,