lightcycle 0.1.1

Consistent and rendezvous hash rings with optimized hash functions.
Documentation
[package]
name = "lightcycle"
version = "0.1.1"
edition = "2024"
authors = ["C J Silverio <ceejceej@gmail.com>"]
description = "Consistent and rendezvous hash rings with optimized hash functions."
readme = "README.md"
license = "Parity-7.0.0"
repository = "https://github.com/ceejbot/lightcycle"
homepage = "https://github.com/ceejbot/lightcycle"

[features]
default = ["hash-murmur3"]
hash-blake3 = ["blake3"]  # Cryptographic option
hash-metrohash = ["metrohash"]  # High-quality distribution
hash-murmur3 = ["murmurs"]  # Best overall for rendezvous hashing
hash-rapidhash = ["rapidhash"]  # Best weighted accuracy (quality & fast variants)
hash-xxhash = ["xxhash-rust"]  # Fastest option
murmurs = ["dep:murmurs"]

[dependencies]
blake3 = { version = "1.3.3", optional = true }
metrohash = { version = "1.0.7", optional = true }
murmurs = { version = "1.0.5", optional = true }
rapidhash = { version = "4.0.0", optional = true }
thiserror = "2.0.16"
xxhash-rust = { version = "0.8", features = ["xxh3"], optional = true }

[lints.rust]
unsafe_code = { level = "deny", priority = 1 }
future_incompatible = { level = "deny", priority = 2 }
trivial_casts = { level = "warn", priority = 3 }
rust_2018_idioms = { level = "warn", priority = 4 }

[lints.clippy]
unwrap_used = "deny"

[profile.release]
lto = true        # Enable full link-time optimization
codegen-units = 1 # Single codegen unit for better optimization
opt-level = 3     # Maximum optimization
strip = true      # Strip symbols for smaller binary
panic = "abort"   # Smaller binary, no unwinding

[dev-dependencies]
anyhow = "1.0.99"
kolmogorov_smirnov = "1.1.0"
redis = "1.2.1"