[package]
name = "hickory-proto"
description = """
Hickory DNS is a safe and secure DNS library. This is the foundational DNS protocol library for all Hickory DNS projects.
"""
documentation = "https://docs.rs/hickory-proto"
readme = "README.md"
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
homepage.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
license.workspace = true
[features]
std = [
"critical-section/std",
"data-encoding/std",
"futures-channel/std",
"futures-io/std",
"futures-util/std",
"ipnet/std",
"rand/std",
"rand/thread_rng",
"ring/std",
"thiserror/std",
"tracing-subscriber/env-filter",
"tracing-subscriber/fmt",
"tracing-subscriber/std",
"tracing/std",
"url/std",
]
tls-aws-lc-rs = ["tokio-rustls/aws-lc-rs", "__tls"]
https-aws-lc-rs = ["tls-aws-lc-rs", "__https"]
quic-aws-lc-rs = ["quinn/rustls-aws-lc-rs", "tls-aws-lc-rs", "__quic"]
h3-aws-lc-rs = ["quic-aws-lc-rs", "__h3"]
tls-ring = ["tokio-rustls/ring", "__tls"]
https-ring = ["tls-ring", "__https"]
quic-ring = ["quinn/rustls-ring", "tls-ring", "__quic"]
h3-ring = ["quic-ring", "__h3"]
__tls = ["dep:bytes", "dep:rustls", "dep:tokio-rustls", "std", "tokio"]
__https = ["dep:bytes", "dep:h2", "dep:http", "std"]
__quic = ["dep:bytes", "dep:pin-project-lite", "dep:quinn", "std"]
__h3 = ["dep:h3", "dep:h3-quinn", "dep:http", "std"]
rustls-platform-verifier = ["dep:rustls-platform-verifier", "std"]
dnssec-aws-lc-rs = ["dep:aws-lc-rs", "aws-lc-rs/aws-lc-sys", "aws-lc-rs/ring-io", "__dnssec"]
dnssec-ring = ["dep:ring", "__dnssec"]
__dnssec = ["dep:bitflags", "dep:rustls-pki-types", "dep:time", "std"]
testing = ["std"]
text-parsing = ["std"]
tokio = ["dep:tokio", "std", "tokio/net", "tokio/rt", "tokio/time", "tokio/rt-multi-thread"]
default = ["std", "tokio"]
serde = ["dep:serde", "std", "url/serde"]
mdns = ["socket2/all", "std"]
no-std-rand = ["dep:critical-section"]
wasm-bindgen = ["dep:wasm-bindgen-crate", "dep:js-sys"]
backtrace = ["dep:backtrace", "std"]
[lib]
name = "hickory_proto"
path = "src/lib.rs"
[dependencies]
async-recursion.workspace = true
async-trait.workspace = true
aws-lc-rs = { workspace = true, optional = true }
backtrace = { workspace = true, optional = true }
bitflags = { workspace = true, optional = true }
bytes = { workspace = true, optional = true }
cfg-if.workspace = true
critical-section = { workspace = true, optional = true }
data-encoding = { workspace = true, features = ["alloc"] }
enum-as-inner.workspace = true
futures-channel = { workspace = true, default-features = false, features = ["alloc"] }
futures-io = { workspace = true, default-features = false, optional = true }
futures-util = { workspace = true, default-features = false, features = ["alloc"] }
h2 = { workspace = true, features = ["stream"], optional = true }
h3 = { workspace = true, optional = true }
h3-quinn = { workspace = true, optional = true }
http = { workspace = true, optional = true }
idna.workspace = true
ipnet.workspace = true
js-sys = { workspace = true, optional = true }
once_cell = { workspace = true, features = ["critical-section"] }
pin-project-lite = { workspace = true, optional = true }
pin-utils = { workspace = true, optional = true }
quinn = { workspace = true, optional = true, features = ["log", "runtime-tokio"] }
rand = { workspace = true, features = ["std_rng"] }
ring = { workspace = true, optional = true, features = ["std"] }
rustls = { workspace = true, optional = true, default-features = false }
rustls-pki-types = { workspace = true, optional = true }
rustls-platform-verifier = { workspace = true, optional = true }
serde = { workspace = true, features = ["derive"], optional = true }
socket2 = { workspace = true, optional = true }
thiserror.workspace = true
time = { workspace = true, optional = true }
tinyvec = { workspace = true, features = ["alloc"] }
tracing = { workspace = true, default-features = false }
tokio = { workspace = true, features = ["io-util", "macros"], optional = true }
tokio-rustls = { workspace = true, optional = true, features = ["early-data"] }
url = { workspace = true }
wasm-bindgen-crate = { workspace = true, optional = true }
webpki-roots = { workspace = true, optional = true }
[dev-dependencies]
futures-executor = { workspace = true, default-features = false, features = ["std"] }
test-support.workspace = true
tokio = { workspace = true, features = ["rt", "time", "macros"] }
tracing-subscriber.workspace = true
[package.metadata.docs.rs]
all-features = true
default-target = "x86_64-unknown-linux-gnu"
targets = ["x86_64-apple-darwin", "x86_64-pc-windows-msvc"]
rustdoc-args = ["--cfg", "docsrs"]
[lints]
workspace = true
[package.metadata.cargo-all-features]
skip_optional_dependencies = true
max_combination_size = 2
denylist = ["__tls", "__https", "__quic", "__h3", "__dnssec"]