persistent-queue 0.1.5

A durable, at-least-once MPSC queue backed by in-memory and durable backends (sled, redb).
Documentation
# A durable, at-least-once MPSC queue backed by in-memory and durable backends.
[package]
name = "persistent-queue"
version = "0.1.5"
edition = "2024"
license = "Apache-2.0"
description = "A durable, at-least-once MPSC queue backed by in-memory and durable backends (sled, redb)."
repository = "https://github.com/rolandjitsu/persistent-queue"
keywords = ["queue", "persistent", "durable", "mpsc", "storage"]
categories = ["concurrency", "data-structures"]

[features]
default = []
# On-disk backend backed by sled.
sled = ["dep:sled"]
# On-disk backend backed by redb.
redb = ["dep:redb"]
# On-disk backend backed by RocksDB (builds a bundled C++ RocksDB).
rocksdb = ["dep:rocksdb"]
# serde + bincode codec for the typed queue layer.
serde = ["dep:serde", "dep:bincode"]
# tokio async facade over the sync core.
tokio = ["dep:tokio"]
# rkyv codec for the typed queue layer, with a zero-copy read path.
rkyv = ["dep:rkyv"]

[dependencies]
sled = { version = "0.34", optional = true }
redb = { version = "2", optional = true }
rocksdb = { version = "0.22", optional = true }
serde = { version = "1", optional = true }
bincode = { version = "1", optional = true }
tokio = { version = "1", optional = true, features = ["rt", "sync"] }
rkyv = { version = "0.8", optional = true }

[dev-dependencies]
tempfile = "3"
serde = { version = "1", features = ["derive"] }

# loom is pulled in only under `--cfg loom`, for the model-checked concurrency tests.
[target.'cfg(loom)'.dependencies]
loom = "0.7"

# criterion (via its `async_tokio` feature) and tokio both pull in tokio, which does
# not compile under `--cfg loom`. They are only used by the benches and async tests,
# never by the loom models, so exclude them from the loom build.
[target.'cfg(not(loom))'.dev-dependencies]
criterion = { version = "0.5", default-features = false, features = ["cargo_bench_support", "async_tokio"] }
tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"] }
rkyv = "0.8"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(loom)'] }

[[bench]]
name = "throughput"
harness = false

[[bench]]
name = "async_overhead"
harness = false
required-features = ["tokio"]

[[bench]]
name = "codec"
harness = false
required-features = ["serde", "rkyv"]