mirror of
https://github.com/NLnetLabs/domain.git
synced 2026-09-30 13:44:59 +02:00
This commit completely redesigns zone file parsing. The primary change is to convert the scanner into a trait in order to allow multiple zone parser implementations for different sources and purposes. A number of changes had to be made in order to make this possible. The commit also contains an initial implementation of a scanner that modifies data in-place and can thus returned parsed data with only a minimal amount of additional allocations. While working, this scanner is more a proof-of-concept at this point to ensure that the API design is sound. This commit is based on ideas and code proposed by @not-my-profile in #106. This commit increases the minimal supported Rust version to 1.59.0.
80 lines
2.5 KiB
TOML
80 lines
2.5 KiB
TOML
[package]
|
|
name = "domain"
|
|
version = "0.8.0-dev"
|
|
rust-version = "1.59.0"
|
|
edition = "2021"
|
|
authors = ["Martin Hoffmann <martin@nlnetlabs.nl>"]
|
|
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]
|
|
time = "0.3.1"
|
|
|
|
rand = { version = "0.8", optional = true }
|
|
bytes = { version = "1.0", optional = true }
|
|
chrono = { version = "0.4.6", optional = true, default-features = false }
|
|
futures = { version = "0.3", optional = true }
|
|
heapless = { version = "0.7", optional = true }
|
|
#openssl = { version = "0.10", optional = true }
|
|
ring = { version = "0.16.14", optional = true }
|
|
serde = { version = "1.0.130", optional = true, features = ["derive"] }
|
|
smallvec = { version = "1.3", optional = true }
|
|
tokio = { version = "1.0", optional = true, features = ["io-util", "macros", "net", "time"] }
|
|
|
|
[target.'cfg(macos)'.dependencies]
|
|
# specifying this overrides minimum-version mio's 0.2.69 libc dependency, which allows the build to work
|
|
libc = { version = "0.2.71", default-features = false, optional = true }
|
|
|
|
[features]
|
|
default = ["std", "random"]
|
|
interop = ["bytes", "ring"]
|
|
master = ["std", "bytes", "chrono"]
|
|
random = ["rand"]
|
|
resolv = ["bytes", "futures", "smallvec", "std", "tokio", "libc", "random"]
|
|
resolv-sync = ["resolv", "tokio/rt"]
|
|
sign = ["std"]
|
|
std = []
|
|
tsig = ["bytes", "ring", "smallvec"]
|
|
validate = ["std", "ring"]
|
|
zonefile = ["bytes", "std"]
|
|
|
|
# This feature should include all features that the CI should include for a
|
|
# test run. Which is everything except interop.
|
|
ci-test = ["resolv", "resolv-sync", "sign", "std", "serde", "tsig", "validate", "zonefile"]
|
|
|
|
[dev-dependencies]
|
|
serde_test = "1.0.130"
|
|
serde_yaml = "0.9"
|
|
tokio-native-tls = "0.3"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "io-util", "net"] }
|
|
|
|
[package.metadata.docs.rs]
|
|
all-features = true
|
|
rustdoc-args = ["--cfg", "docsrs"]
|
|
|
|
[[example]]
|
|
name = "readzone"
|
|
required-features = ["zonefile"]
|
|
|
|
[[example]]
|
|
name = "download-rust-lang"
|
|
required-features = ["resolv"]
|
|
|
|
[[example]]
|
|
name = "lookup"
|
|
required-features = ["resolv"]
|
|
|
|
[[example]]
|
|
name = "resolv-sync"
|
|
required-features = ["resolv-sync"]
|
|
|