[package] name = "domain" version = "0.10.1" rust-version = "1.78.0" edition = "2021" authors = ["NLnet Labs "] description = "A DNS library for Rust." documentation = "https://docs.rs/domain" homepage = "https://github.com/nlnetlabs/domain/" repository = "https://github.com/nlnetlabs/domain/" readme = "README.md" keywords = ["DNS", "domain"] license = "BSD-3-Clause" [lib] name = "domain" path = "src/lib.rs" [dependencies] octseq = { version = "0.5.1", default-features = false } time = { version = "0.3.1", default-features = false } rand = { version = "0.8", optional = true } arc-swap = { version = "1.7.0", optional = true } bytes = { version = "1.0", optional = true, default-features = false } chrono = { version = "0.4.35", optional = true, default-features = false } # 0.4.35 deprecates Duration::seconds() futures = { version = "0.3.22", optional = true } # Force futures to at least 0.3.22 for minimal-version build futures-util = { version = "0.3", optional = true } heapless = { version = "0.8", optional = true } libc = { version = "0.2.153", default-features = false, optional = true } # 0.2.79 is the first version that has IP_PMTUDISC_OMIT parking_lot = { version = "0.12.2", optional = true } moka = { version = "0.12.3", optional = true, features = ["future"] } proc-macro2 = { version = "1.0.69", optional = true } # Force proc-macro2 to at least 1.0.69 for minimal-version build ring = { version = "0.17", optional = true } serde = { version = "1.0.130", optional = true, features = ["derive"] } siphasher = { version = "1", optional = true } smallvec = { version = "1.3", optional = true } tokio = { version = "1.33", optional = true, features = ["io-util", "macros", "net", "time", "sync", "rt-multi-thread" ] } tokio-rustls = { version = "0.26", optional = true, default-features = false } tracing = { version = "0.1.40", optional = true } tracing-subscriber = { version = "0.3.18", optional = true, features = ["env-filter"] } # For testing in integration tests: #mock_instant = { version = "0.4.0", optional = true } [features] default = ["std", "rand"] bytes = ["dep:bytes", "octseq/bytes"] heapless = ["dep:heapless", "octseq/heapless"] resolv = ["net", "smallvec", "unstable-client-transport"] resolv-sync = ["resolv", "tokio/rt"] serde = ["dep:serde", "octseq/serde"] sign = ["std"] smallvec = ["dep:smallvec", "octseq/smallvec"] std = ["bytes?/std", "octseq/std", "time/std"] net = ["bytes", "futures-util", "rand", "std", "tokio"] tsig = ["bytes", "ring", "smallvec"] validate = ["std", "ring"] zonefile = ["bytes", "serde", "std"] # Unstable features unstable-client-transport = [ "moka", "net", "tracing" ] unstable-server-transport = ["arc-swap", "chrono/clock", "libc", "net", "tracing"] unstable-stelline = ["tokio/test-util", "tracing", "tracing-subscriber", "unstable-server-transport", "zonefile"] unstable-zonetree = ["futures", "parking_lot", "serde", "tokio", "tracing"] # Test features # Commented out as using --all-features to build would cause mock time to also # be used. We plan to move the test code under src/ and then use #[cfg(test)] # and this will no longer be needed. The cookies test that depends on this is # currently also disabled by being renamed to .rpl.not so it is okay to comment # this out. #mock-time = ["mock_instant"] [dev-dependencies] lazy_static = { version = "1.4.0" } rstest = "0.19.0" rustls-pemfile = { version = "2.1.2" } serde_test = "1.0.130" serde_json = "1.0.113" serde_yaml = "0.9" socket2 = { version = "0.5.5" } tokio = { version = "1.37", features = ["rt-multi-thread", "io-util", "net", "test-util"] } tokio-rustls = { version = "0.26", default-features = false, features = [ "ring", "logging", "tls12" ] } tokio-test = "0.4" tokio-tfo = { version = "0.2.0" } webpki-roots = { version = "0.26" } # For the "mysql-zone" example #sqlx = { version = "0.6", features = [ "runtime-tokio-native-tls", "mysql" ] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [[example]] name = "download-rust-lang" required-features = ["resolv"] [[example]] name = "lookup" required-features = ["resolv"] [[example]] name = "resolv-sync" required-features = ["resolv-sync"] [[example]] name = "client" required-features = ["std", "rand"] [[example]] name = "client-transports" required-features = ["net", "unstable-client-transport"] [[example]] name = "server-transports" required-features = ["net", "unstable-server-transport"] [[example]] name = "read-zone" required-features = ["zonefile"] [[example]] name = "query-zone" required-features = ["zonefile", "unstable-zonetree"] [[example]] name = "serve-zone" required-features = ["zonefile", "net", "unstable-server-transport", "unstable-zonetree"] # This example is commented out because it is difficult, if not impossible, # when including the sqlx dependency, to make the dependency tree compatible # with both `cargo +nightly update -Z minimal versions` and the crate minimum # supported Rust version (1.67 at the time of writing), both of which are # tested by our CI setup. To try this example, uncomment the lines below and # the sqlx dependency above, then run `cargo run --example mysql-zone`. #[[example]] #name = "mysql-zone" #path = "examples/other/mysql-zone.rs" #required-features = ["zonefile", "net", "unstable-server-transport", "unstable-zonetree"]