| Crates.io | mmap-vecdeque |
| lib.rs | mmap-vecdeque |
| version | 0.2.1 |
| created_at | 2024-12-13 10:40:54.766191+00 |
| updated_at | 2024-12-13 14:12:07.878882+00 |
| description | A file-backed memory-mapped VecDeque with deferred commits, atomic and durable persistence. |
| homepage | |
| repository | https://github.com/aaiyer/mmap-vecdeque |
| max_upload_size | |
| id | 1482066 |
| size | 32,173 |
mmap-vecdeque is a file-backed, memory-mapped, durable, and thread-safe double-ended queue (deque) for Rust. Unlike a normal VecDeque, operations aren't immediately durable. Instead, you can batch multiple insertions, deletions, etc., and then call commit() to atomically persist all changes to disk.
commit() is called.commit() returns, all changes are atomically and durably persisted to disk.iter() and iter_mut() to traverse elements.use mmap_vecdeque::{MmapVecDeque, MmapVecDequeError};
use std::path::Path;
fn main() -> Result<(), MmapVecDequeError> {
let dir = Path::new("my_deque_storage");
let mut deque = MmapVecDeque::<u64>::open_or_create(dir, None)?;
deque.push_back(42)?;
deque.push_front(1)?;
// Changes are not yet durable on disk
deque.commit()?; // Now 1 and 42 are atomically committed.
println!("Front: {:?}", deque.front()); // Some(1)
println!("Back: {:?}", deque.back()); // Some(42)
deque.pop_front()?;
// Not durable yet.
deque.commit()?; // commit again
println!("Front after pop: {:?}", deque.front()); // Some(42)
// Iteration
for val in deque.iter() {
println!("{}", val);
}
Ok(())
}