[package]
edition = "2024"
rust-version = "1.95"
name = "kacrab"
version = "0.2.0"
authors = ["pirumu"]
build = false
exclude = ["tests/**"]
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A Kafka client for Rust, built from the protocol up."
readme = "README.md"
keywords = [
"kafka",
"producer",
"async",
"client",
"protocol",
]
categories = [
"network-programming",
"asynchronous",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/pirumu/kacrab"
[package.metadata.docs.rs]
features = [
"producer",
"consumer",
"admin",
"compression",
"macros",
]
[features]
admin = []
compression = [
"gzip",
"snappy",
"lz4",
"zstd",
]
consumer = [
"compression",
"dep:regex",
]
default = []
gssapi = ["dep:libgssapi"]
gzip = ["kacrab-protocol/gzip"]
lz4 = ["kacrab-protocol/lz4"]
lz4-hc = ["kacrab-protocol/lz4-hc"]
macros = []
producer = []
snappy = ["kacrab-protocol/snappy"]
zstd = ["kacrab-protocol/zstd"]
[lib]
name = "kacrab"
path = "src/lib.rs"
[dependencies.ahash]
version = "0.8"
[dependencies.base64]
version = "0.22"
features = ["std"]
default-features = false
[dependencies.bytes]
version = "1.11"
default-features = false
[dependencies.crossbeam-queue]
version = "0.3"
[dependencies.getrandom]
version = "0.3"
[dependencies.hmac]
version = "0.12"
[dependencies.jks]
version = "0.3"
features = ["rand"]
default-features = false
[dependencies.jsonwebtoken]
version = "10.4"
features = [
"aws_lc_rs",
"use_pem",
]
default-features = false
[dependencies.kacrab-macros]
version = "0.2.0"
[dependencies.kacrab-protocol]
version = "0.2.0"
[dependencies.libgssapi]
version = "0.11"
optional = true
[dependencies.p12-keystore]
version = "0.3"
[dependencies.pkcs8]
version = "0.11"
features = [
"encryption",
"getrandom",
"pem",
"std",
]
[dependencies.regex]
version = "1"
features = [
"std",
"unicode",
]
optional = true
default-features = false
[dependencies.rustls]
version = "0.23"
[dependencies.rustls-native-certs]
version = "0.8"
[dependencies.serde_json]
version = "1"
features = ["std"]
default-features = false
[dependencies.sha2]
version = "0.10"
[dependencies.socket2]
version = "0.6"
features = ["all"]
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1.52"
features = [
"io-util",
"macros",
"net",
"rt",
"sync",
"time",
]
default-features = false
[dependencies.tokio-rustls]
version = "0.26"
[dependencies.uuid]
version = "1"
features = ["v4"]
default-features = false
[dev-dependencies.bytes]
version = "1.11"
default-features = false
[dev-dependencies.kacrab-protocol]
version = "0.2.0"
[dev-dependencies.rcgen]
version = "0.13"
[dev-dependencies.tokio]
version = "1.52"
features = [
"io-util",
"macros",
"net",
"rt",
"time",
]
default-features = false
[lints.clippy]
allow_attributes = "deny"
allow_attributes_without_reason = "deny"
arithmetic_side_effects = "warn"
as_underscore = "deny"
clone_on_ref_ptr = "deny"
dbg_macro = "deny"
empty_drop = "deny"
empty_structs_with_brackets = "deny"
exit = "deny"
expect_used = "warn"
filetype_is_file = "deny"
float_cmp_const = "deny"
fn_to_numeric_cast_any = "deny"
get_unwrap = "deny"
if_then_some_else_none = "deny"
indexing_slicing = "warn"
infinite_loop = "warn"
let_underscore_must_use = "deny"
lossy_float_literal = "deny"
mem_forget = "deny"
missing_assert_message = "deny"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
mixed_read_write_in_expression = "deny"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
multiple_inherent_impl = "deny"
must_use_candidate = "allow"
mutex_atomic = "deny"
panic = "warn"
pub_without_shorthand = "deny"
rc_buffer = "deny"
rc_mutex = "deny"
redundant_pub_crate = "allow"
rest_pat_in_fully_bound_structs = "deny"
same_name_method = "deny"
self_named_module_files = "allow"
str_to_string = "deny"
string_add = "deny"
string_lit_chars_any = "deny"
string_slice = "deny"
suspicious_xor_used_as_pow = "deny"
todo = "warn"
try_err = "deny"
undocumented_unsafe_blocks = "deny"
unimplemented = "warn"
unnecessary_safety_comment = "deny"
unnecessary_safety_doc = "deny"
unnecessary_self_imports = "deny"
unneeded_field_pattern = "deny"
unreachable = "warn"
unwrap_in_result = "warn"
unwrap_used = "warn"
verbose_file_reads = "deny"
[lints.clippy.all]
level = "deny"
priority = -1
[lints.clippy.cargo]
level = "deny"
priority = -1
[lints.clippy.nursery]
level = "deny"
priority = -1
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.rust]
elided_lifetimes_in_paths = "warn"
let_underscore_drop = "deny"
macro_use_extern_crate = "deny"
meta_variable_misuse = "deny"
missing_abi = "deny"
missing_debug_implementations = "warn"
missing_docs = "warn"
non_ascii_idents = "deny"
non_local_definitions = "deny"
redundant_lifetimes = "deny"
single_use_lifetimes = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"
unreachable_pub = "deny"
unsafe_code = "forbid"
unsafe_op_in_unsafe_fn = "deny"
unused_extern_crates = "deny"
unused_import_braces = "deny"
unused_lifetimes = "deny"
unused_qualifications = "deny"
unused_results = "warn"
variant_size_differences = "warn"
[lints.rust.future_incompatible]
level = "deny"
priority = -1
[lints.rust.keyword_idents]
level = "deny"
priority = -1
[lints.rust.nonstandard_style]
level = "deny"
priority = -1
[lints.rust.rust_2018_idioms]
level = "deny"
priority = -1
[lints.rust.rust_2021_compatibility]
level = "deny"
priority = -1
[lints.rustdoc]
bare_urls = "deny"
broken_intra_doc_links = "deny"
invalid_codeblock_attributes = "deny"
invalid_html_tags = "deny"
invalid_rust_codeblocks = "deny"
missing_crate_level_docs = "warn"
private_intra_doc_links = "deny"
unescaped_backticks = "deny"