Struct nats::jetstream::IntervalTree [−][src]
pub struct IntervalTree { /* fields omitted */ }
Records ranges of acknowledged IDs for low-memory deduplication.
Implementations
impl IntervalTree
[src]
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]
impl Default for IntervalTree
[src]fn default() -> IntervalTree
[src]
Auto Trait Implementations
impl RefUnwindSafe for IntervalTree
impl RefUnwindSafe for IntervalTree
impl Send for IntervalTree
impl Send for IntervalTree
impl Sync for IntervalTree
impl Sync for IntervalTree
impl Unpin for IntervalTree
impl Unpin for IntervalTree
impl UnwindSafe for IntervalTree
impl UnwindSafe for IntervalTree