7 releases
Uses new Rust 2024
| 0.3.5 | Sep 22, 2025 |
|---|---|
| 0.3.4 | Sep 21, 2025 |
| 0.3.3 | Aug 24, 2025 |
| 0.3.1 | Jul 15, 2025 |
| 0.2.0 | Jul 14, 2025 |
#554 in Encoding
92 downloads per month
Used in rotbl
72KB
2K
SLoC
seq-marked
Sequence-numbered values with tombstone support for LSM trees and versioned data.
Core Types
Marked<D>: Data that can be marked as tombstoneSeqMarked<D>: Sequence-numbered marked value
Usage
use 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));
API Overview
Marked<D>
Normal(D)- contains dataTombStone- deletion marker- Tombstones are always ordered after normal values
SeqMarked<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 data
Features
- Sequence-based ordering with tombstone support
- Optional serde/bincode serialization
- Comprehensive ordering semantics for LSM trees
License
Apache License 2.0 - see LICENSE file for details.
Contributing
Contributions welcome! Please ensure all tests pass and code is properly formatted before submitting a PR.
Dependencies
~165KB