queue-file

Crate API License Build Status Windows Build Status

queue-file is a lightning-fast, transactional, file-based FIFO.

Addition and removal of an element from the queue is an O(1) operation and is atomic. Writes are synchronous by default; data will be written to disk before an operation returns.

queue-file crate is a feature complete and binary compatible port of QueueFile class from Tape2 by Square, Inc. Check the original project here.

Documentation

Usage

To use queue-file, first add this to your Cargo.toml:

toml [dependencies] queue-file = "1"

Example

```rust use queue_file::QueueFile;

fn main() { let mut qf = QueueFile::open("example.qf") .expect("cannot open queue file");

qf.add("ELEMENT #1".as_bytes()).expect("add failed");
qf.add("ELEMENT #2".as_bytes()).expect("add failed");
qf.add("ELEMENT #3".as_bytes()).expect("add failed");

qf.remove().expect("remove failed");

for (index, elem) in qf.iter().enumerate() {
    println!(
        "{}: {} bytes -> {}",
        index,
        elem.len(),
        std::str::from_utf8(&elem).unwrap_or("<invalid>")
    );
}

qf.clear().expect("clear failed");

} ```

License

This project is licensed under the Apache 2.0 license.