[package]
name = "tinyklv"
version = "0.1.2"
authors = ["Arpad Voros <arpadav@gmail.com>"]
license = "MIT"
description = "The simplest Key-Length-Value (KLV) framework in Rust"
repository = "https://github.com/arpadav/tinyklv"
homepage = "https://arpadvoros.com/tinyklv"
documentation = "https://docs.rs/tinyklv"
readme = "README.md"
keywords = ["decode", "encode", "klv", "parsing", "tlv"]
categories = ["development-tools", "encoding", "parsing"]
edition = "2024"
rust-version = "1.95"
exclude = ["TODO.md", "book/", "examples", "tests", "benches"]
publish = true
[workspace]
members = ["impl"]
[[test]]
name = "codecs"
path = "tests/codecs/main.rs"
[[test]]
name = "derive"
path = "tests/derive/main.rs"
[[test]]
name = "edge_cases"
path = "tests/edge_cases/main.rs"
[[test]]
name = "proptest_roundtrip"
path = "tests/proptest_roundtrip/main.rs"
[dependencies]
chrono = { version = "0.4.44", optional = true }
memchr = "2.8.0"
num-traits = "0.2.19"
pastey = "0.2.3"
tinyklv-impl = { path = "impl", version = "0.1.2" }
tracing = { version = "0.1.44", optional = true }
winnow = { version = "1.0.2", features = ["binary", "parser", "simd"] }
[dev-dependencies]
criterion = "^0.8"
proptest = "1.11"
rand = "^0.10"
rand_distr = "^0.6"
serde = { version = "^1", features = ["derive"] }
serde_bytes = "^0.11"
serde_klv = "^0.3"
tlv_parser = "^0.10"
tokio = { version = "^1.52", features = ["macros", "rt-multi-thread", "sync"] }
[[bench]]
name = "suite"
harness = false
[features]
default = []
ascii = ["winnow/ascii"]
full = ["ascii", "chrono"]
tracing = ["dep:tracing", "tinyklv-impl/tracing"]
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(kani)"] }
[lints.clippy]
pedantic = { level = "deny", priority = -1 }
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
cast_lossless = "allow"
inline_always = "allow"
wildcard_imports = "allow"
float_cmp = "allow"
must_use_candidate = "allow"
module_name_repetitions = "allow"
too_many_lines = "allow"
needless_for_each = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
similar_names = "allow"
cast_precision_loss = "allow"
unreadable_literal = "allow"
iter_not_returning_iterator = "allow"
into_iter_without_iter = "allow"
double_must_use = "allow"
manual_let_else = "allow"
struct_field_names = "allow"
many_single_char_names = "allow"
trivially_copy_pass_by_ref = "allow"
match_same_arms = "allow"
doc_markdown = "allow"
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
strip = true
lto = true
panic = "abort"
codegen-units = 1