pub struct SequenceNumberCounter(/* private fields */);Expand description
Thread-safe sequence number generator
§Examples
let seqno = SequenceNumberCounter::default();
let visible_seqno = SequenceNumberCounter::default();
let tree = Config::new(path, seqno.clone(), visible_seqno.clone()).open()?;
// Do some inserts...
for k in [b"a", b"b", b"c"] {
let batch_seqno = seqno.next();
tree.insert(k, "abc", batch_seqno);
visible_seqno.fetch_max(batch_seqno + 1);
}
// Create a batch
let batch_seqno = seqno.next();
tree.remove("a".as_bytes(), batch_seqno);
tree.remove("b".as_bytes(), batch_seqno);
tree.remove("c".as_bytes(), batch_seqno);
visible_seqno.fetch_max(batch_seqno + 1);Implementations§
Source§impl SequenceNumberCounter
impl SequenceNumberCounter
Sourcepub fn next(&self) -> SeqNo
pub fn next(&self) -> SeqNo
Allocates and returns the next sequence number, atomically incrementing the internal counter.
The returned value is the counter’s value before the increment (i.e., pre-increment / fetch-then-add semantics).
§Panics
Panics if the current value is already MAX_SEQNO (i.e., when
advancing past it would enter the reserved MSB range).
Sourcepub fn get(&self) -> SeqNo
pub fn get(&self) -> SeqNo
Returns the current internal counter value without incrementing.
This is the value that the next call to next() will
return (and then advance past).
Trait Implementations§
Source§impl Clone for SequenceNumberCounter
impl Clone for SequenceNumberCounter
Source§fn clone(&self) -> SequenceNumberCounter
fn clone(&self) -> SequenceNumberCounter
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SequenceNumberCounter
impl Debug for SequenceNumberCounter
Source§impl Default for SequenceNumberCounter
impl Default for SequenceNumberCounter
Source§fn default() -> SequenceNumberCounter
fn default() -> SequenceNumberCounter
Returns the “default value” for a type. Read more
Source§impl From<SequenceNumberCounter> for SharedSequenceNumberGenerator
impl From<SequenceNumberCounter> for SharedSequenceNumberGenerator
Source§fn from(counter: SequenceNumberCounter) -> Self
fn from(counter: SequenceNumberCounter) -> Self
Converts to this type from the input type.
Source§impl SequenceNumberGenerator for SequenceNumberCounter
impl SequenceNumberGenerator for SequenceNumberCounter
Auto Trait Implementations§
impl Freeze for SequenceNumberCounter
impl RefUnwindSafe for SequenceNumberCounter
impl Send for SequenceNumberCounter
impl Sync for SequenceNumberCounter
impl Unpin for SequenceNumberCounter
impl UnsafeUnpin for SequenceNumberCounter
impl UnwindSafe for SequenceNumberCounter
Blanket Implementations§
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