[package]
name = "range-set-blaze"
version = "0.6.0"
edition = "2024"
description = "Integer sets as fast, sorted integer ranges; Maps with integer-range keys; Full set operations"
repository = "https://github.com/CarlKCarlK/range-set-blaze"
readme = "README.md"
documentation = "https://docs.rs/range-set-blaze/latest/range-set-blaze/"
authors = ["Carl Kadie"]
license = "MIT OR Apache-2.0"
keywords = ["set", "range", "data-structures", "no_std", "wasm"]
categories = ["data-structures", "no-std", "wasm"]
homepage = "https://github.com/CarlKCarlK/range-set-blaze"
resolver = "2"
exclude = ["docs/**/*"]

[workspace]
members = [
    ".",
    "xtask",
    "tests/wasm-demo",
    "tests/wasm-led",
    "tests/embedded",
    # "examples/simd/simd_hello"
    # "examples/simd/is_consecutive0",
    # "examples/simd/is_consecutive1",
    # "examples/simd/is_consecutive2",
]


[lib]

[features]
default = ["std"]
std = ["itertools/use_std", "num-traits/std", "num-integer/std"]
rog_experimental = []
from_slice = []
test_util = ["rand"]

[dependencies]
itertools = { version = "0.14.0", default-features = false, features = [
    "use_alloc",
] }
num-integer = { version = "0.1.46", default-features = false }
num-traits = { version = "0.2.19", default-features = false }
gen_ops = "0.4.0"
rand = { version = "0.9.1", optional = true }

[dev-dependencies]
syntactic-for = "0.1.1"
wasm-bindgen-test = "0.3.50"
rand = "0.9.1"
range-set-blaze = { path = ".", features = ["test_util"] }
anyhow = "1.0.98"

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
criterion = { version = "0.5.1", features = [
    "html_reports",
], default-features = false }
trybuild = "1.0.105"
thousands = "0.2.0"
quickcheck = "1.0.3"
quickcheck_macros = "1.1.0"
rangemap = "1.5.1"
range-collections = "0.4.6"
range-set = "0.0.11"
glob = "0.3.2"
roaring = "0.10.12"
rand = { version = "0.9.1" }


[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dev-dependencies]
getrandom = { version = "0.3.3", features = ["wasm_js"] }
web-time = "1.1.0"


# Declare a benchmark called "bench" for bench.rs
[[bench]]
name = "bench"
path = "benches/bench.rs"
harness = false

# Declare a benchmark called "bench_map" for bench_map.rs
[[bench]]
name = "bench_map"
path = "benches/bench_map.rs"
harness = false

[package.metadata.docs.rs]
all-features = true

###############################################################################
# Global lint levels (stable since Rust 1.77; on older nightly use
#   cargo-features = ["lints"]
###############################################################################

[lints.rust]
# rustc (builtin) lints
unused_lifetimes = "warn"
missing_docs = "warn"
single_use_lifetimes = "warn"
unreachable_pub = "warn"
rust_2018_idioms = { level = "warn", priority = -2 }
unexpected_cfgs = { level = "warn", check-cfg = [
    "cfg(coverage)",
    "cfg(never)",
] }

[lints.clippy]
# individual Clippy lints
uninlined_format_args = "warn"
## nightly only: doc_link_code = "allow"
use_self = "warn"
must_use_candidate = "warn"
unwrap_used = "warn"
panic_in_result_fn = "warn"

# Clippy lint groups
pedantic = { level = "warn", priority = -2 }
perf = { level = "warn", priority = -6 }
style = { level = "warn", priority = -4 }
complexity = { level = "warn", priority = -5 }
correctness = { level = "warn", priority = -3 }
nursery = { level = "warn", priority = -7 }

# cargo-specific groups
cargo = { level = "warn", priority = -8 }
cargo_common_metadata = { level = "warn", priority = -9 }
