Expand description
File-based storage implementation.
This module provides disk-based persistent storage with support for both traditional file I/O and memory-mapped files (mmap).
§Features
- Traditional I/O: Buffered reads/writes with configurable buffer size
- Memory-mapped I/O: High-performance reads using mmap with caching
- File locking: Concurrent access control
- Flexible configuration: Buffer size, sync writes, temp directory, etc.
§Memory-Mapped Mode
When FileStorageConfig.use_mmap is enabled:
- Files are mapped into memory for reading
- Mapped files are cached for reuse
- File modifications are detected and cache is invalidated
- Supports prefaulting and huge pages for performance
§Example
use laurus::storage::file::{FileStorage, FileStorageConfig};
use laurus::storage::Storage;
use std::io::Write;
use tempfile::TempDir;
// Create storage with mmap enabled
let temp_dir = TempDir::new().unwrap();
let mut config = FileStorageConfig::new(temp_dir.path());
config.use_mmap = true;
let storage = FileStorage::new(temp_dir.path(), config)?;
// Write a file
let mut output = storage.create_output("test.dat")?;
output.write_all(b"Hello, world!")?;
output.close()?;
// Read using mmap
let mut input = storage.open_input("test.dat")?;
let mut buffer = Vec::new();
input.read_to_end(&mut buffer)?;Structs§
- File
Input - A file input implementation.
- File
Lock Manager - A file-based lock manager.
- File
Output - A file output implementation.
- File
Storage - A file-based storage implementation.
- File
Storage Config - Configuration specific to file-based storage.
- Mmap
Input - A memory-mapped file input implementation.