# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.81.0"
name = "skl"
version = "0.20.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A lock-free thread-safe concurrent ARENA based (heap backend or memory map backend) skiplist implementation which helps develop MVCC memtable for LSM-Tree."
homepage = "https://github.com/al8n/skl"
documentation = "https://docs.rs/skl"
readme = "README.md"
keywords = [
    "skiplist",
    "lock-free",
    "memtable",
    "crossbeam-skiplist",
    "arena",
]
categories = [
    "database",
    "data-structures",
    "concurrency",
    "no-std",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/al8n/skl"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[profile.bench]
opt-level = 3
lto = "thin"
codegen-units = 1
debug = 0
debug-assertions = false
rpath = false
overflow-checks = false
incremental = false

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

[[example]]
name = "heap"
path = "examples/heap.rs"

[[example]]
name = "mmap"
path = "examples/mmap.rs"
required-features = ["memmap"]

[[example]]
name = "mmap-anon"
path = "examples/mmap_anon.rs"
required-features = ["memmap"]

[[example]]
name = "multiple_maps"
path = "examples/multiple_maps.rs"
required-features = ["memmap"]

[[bench]]
name = "bench"
path = "benches/bench.rs"
harness = false

[dependencies.among]
version = "0.1"
features = ["either"]
default-features = false

[dependencies.arbitrary-int]
version = "1.2"
default-features = false

[dependencies.bitflags]
version = "2"

[dependencies.dbutils]
version = "0.10"
default-features = false

[dependencies.either]
version = "1"
default-features = false

[dependencies.memchr]
version = "2"
optional = true
default-features = false

[dependencies.paste]
version = "1"

[dependencies.rand]
version = "0.8"
features = ["getrandom"]
default-features = false

[dependencies.rarena-allocator]
version = "0.4"
default-features = false

[dependencies.tracing]
version = "0.1"
optional = true

[dependencies.viewit]
version = "0.1.5"

[dev-dependencies.criterion]
version = "0.5"

[dev-dependencies.parking_lot]
version = "0.12"

[dev-dependencies.tempfile]
version = "3"

[features]
alloc = [
    "rarena-allocator/alloc",
    "dbutils/alloc",
]
default = ["std"]
experimental = ["memchr"]
memmap = [
    "rarena-allocator/memmap",
    "std",
]
std = [
    "rand/default",
    "either/default",
    "dbutils/default",
    "rarena-allocator/std",
    "memchr?/default",
    "among/default",
]
tracing = [
    "dep:tracing",
    "rarena-allocator/tracing",
]

[target.'cfg(target_family = "wasm")'.dependencies.getrandom]
version = "0.2"
features = ["js"]

[lints.rust]
rust_2018_idioms = "warn"
single_use_lifetimes = "warn"

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
    "cfg(all_skl_tests)",
    "cfg(test_generic_unsync_versioned)",
    "cfg(test_generic_unsync_map)",
    "cfg(test_generic_sync_versioned)",
    "cfg(test_generic_sync_map)",
    "cfg(test_generic_sync_multiple_version_concurrent)",
    "cfg(test_generic_sync_map_concurrent)",
    "cfg(test_generic_sync_multiple_version_concurrent_with_optimistic_freelist)",
    "cfg(test_generic_sync_map_concurrent_with_optimistic_freelist)",
    "cfg(test_generic_sync_multiple_version_concurrent_with_pessimistic_freelist)",
    "cfg(test_generic_sync_map_concurrent_with_pessimistic_freelist)",
    "cfg(test_dynamic_unsync_versioned)",
    "cfg(test_dynamic_unsync_map)",
    "cfg(test_dynamic_sync_versioned)",
    "cfg(test_dynamic_sync_map)",
    "cfg(test_dynamic_sync_multiple_version_concurrent)",
    "cfg(test_dynamic_sync_map_concurrent)",
    "cfg(test_dynamic_sync_multiple_version_concurrent_with_optimistic_freelist)",
    "cfg(test_dynamic_sync_map_concurrent_with_optimistic_freelist)",
    "cfg(test_dynamic_sync_multiple_version_concurrent_with_pessimistic_freelist)",
    "cfg(test_dynamic_sync_map_concurrent_with_pessimistic_freelist)",
]
