Crates.io | seq-marked |
lib.rs | seq-marked |
version | 0.3.5 |
created_at | 2025-07-14 16:47:23.371374+00 |
updated_at | 2025-09-22 15:01:04.43877+00 |
description | Sequence-numbered values with tombstone support for LSM trees and versioned data. |
homepage | |
repository | https://github.com/drmingdrmer/seq-marked |
max_upload_size | |
id | 1752029 |
size | 94,197 |
Sequence-numbered values with tombstone support for LSM trees and versioned data.
Marked<D>
: Data that can be marked as tombstoneSeqMarked<D>
: Sequence-numbered marked valueuse seq_marked::{Marked, SeqMarked};
// Basic sequence-numbered values
let v1 = SeqMarked::new_normal(1, "data");
let v2 = SeqMarked::new_normal(2, "data");
let v2_ts = SeqMarked::<&str>::new_tombstone(2);
assert!(v1 < v2); // ordered by sequence
assert!(v2 < v2_ts); // tombstone > normal
// Working with marked values
let data = Marked::Normal("hello");
let tombstone = Marked::<&str>::TombStone;
assert!(tombstone > data);
// Accessing data
assert_eq!(v1.data_ref(), Some(&"data"));
assert_eq!(v2_ts.data_ref(), None);
assert!(v2_ts.is_tombstone());
// Transform data while preserving sequence
let lengths = v1.map(|s| s.len());
assert_eq!(lengths.data_ref(), Some(&4));
Marked<D>
Normal(D)
- contains dataTombStone
- deletion markerSeqMarked<D>
new_normal(seq, data)
- create normal valuenew_tombstone(seq)
- create tombstoneseq()
- get sequence numberdata_ref()
/ into_data()
- access datais_normal()
/ is_tombstone()
- check typemap(fn)
- transform data while preserving sequenceorder_key()
- get ordering key without dataSequence-based ordering with tombstone support
Optional serde/bincode serialization
Comprehensive ordering semantics for LSM trees
Apache License 2.0 - see LICENSE file for details.
Contributions welcome! Please ensure all tests pass and code is properly formatted before submitting a PR.