[package]
name = "lsm-tree"
description = "A K.I.S.S. implementation of log-structured merge trees (LSM-trees/LSMTs)"
license = "MIT OR Apache-2.0"
version = "3.0.4"
edition = "2021"
rust-version = "1.91.0"
readme = "README.md"
include = ["src/**/*", "LICENSE-APACHE", "LICENSE-MIT", "README.md"]
repository = "https://github.com/fjall-rs/lsm-tree"
homepage = "https://github.com/fjall-rs/lsm-tree"
keywords = ["lsmt", "lsm", "rocksdb", "leveldb", "key-value"]
categories = ["data-structures", "database-implementations", "algorithms"]

[lib]
name = "lsm_tree"
path = "src/lib.rs"

[features]
default = []
lz4 = ["dep:lz4_flex"]
bytes_1 = ["dep:bytes"]
metrics = []

[dependencies]
bytes = { version = "1", optional = true }
byteorder = { package = "byteorder-lite", version = "0.1.0" }
byteview = "~0.10.1"
crossbeam-skiplist = "0.1.3"
enum_dispatch = "0.3.13"
interval-heap = "0.0.5"
log = "0.4.27"
lz4_flex = { version = "0.11.5", optional = true, default-features = false }
quick_cache = { version = "0.6.16", default-features = false, features = [] }
rustc-hash = "2.1.1"
self_cell = "1.2.0"
sfa = "~1.0.0"
tempfile = "3.20.0"
varint-rs = "2.2.0"
xxhash-rust = { version = "0.8.15", features = ["xxh3"] }

[dev-dependencies]
criterion = { version = "0.8.0", features = ["html_reports"] }
fs_extra = "1.3.0"
nanoid = "0.4.0"
rand = "0.9.2"
strum = { version = "0.27.2", features = ["derive"] }
test-log = "0.2.18"

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

[package.metadata.cargo-all-features]
denylist = []

[[bench]]
name = "tli"
harness = false
path = "benches/tli.rs"
required-features = []

[[bench]]
name = "merge"
harness = false
path = "benches/merge.rs"
required-features = []

[[bench]]
name = "memtable"
harness = false
path = "benches/memtable.rs"
required-features = []

[[bench]]
name = "bloom"
harness = false
path = "benches/bloom.rs"
required-features = []

[[bench]]
name = "block"
harness = false
path = "benches/block.rs"
required-features = ["lz4"]

[[bench]]
name = "tree"
harness = false
path = "benches/tree.rs"
required-features = ["lz4"]

[[bench]]
name = "level_manifest"
harness = false
path = "benches/level_manifest.rs"
required-features = []

[[bench]]
name = "fd_table"
harness = false
path = "benches/fd_table.rs"
required-features = []

[[bench]]
name = "partition_point"
harness = false
path = "benches/partition_point.rs"
required-features = []
