[package] authors = ["Al Liu "] name = "nodecraft" description = "Crafting seamless node operations for distributed systems, which provides foundational traits for node identification and address resolution." homepage = "https://github.com/al8n/nodecraft" repository = "https://github.com/al8n/nodecraft.git" documentation = "https://docs.rs/nodecraft/" readme = "README.md" version = "0.3.5" license = "MIT OR Apache-2.0" keywords = ["node", "async", "distributed-systems"] categories = ["network-programming", "asynchronous", "development-tools"] edition = "2021" rust-version = "1.75.0" [features] default = ["std"] full = ["std", "agnostic", "dns", "resolver", "serde", "tracing"] alloc = ["smol_str", "cheap-clone/alloc", "transformable?/alloc"] std = [ "alloc", "transformable?/std", "cheap-clone/std", "smol_str?/std", "thiserror", "serde?/std", "humantime-serde", "futures?/std", ] # enable runtime agnostic features agnostic = ["dep:agnostic-lite", "async", "std"] # enable async features async = ["dep:futures", "std", "transformable?/async"] # enable dns node address resolver dns = [ "std", "resolver", "dep:hickory-resolver", "crossbeam-skiplist/default", "async", "agnostic/dns", ] dns-over-quic = ["dns", "agnostic/dns-over-quic"] dns-over-h3 = ["dns", "agnostic/dns-over-h3"] dns-over-https-rustls = ["dns", "agnostic/dns-over-https-rustls"] dns-over-rustls = ["dns", "agnostic/dns-over-rustls"] dns-over-openssl = ["dns", "agnostic/dns-over-openssl"] dns-over-native-tls = ["dns", "agnostic/dns-over-native-tls"] dns-webpki-roots = ["dns", "agnostic/dns-webpki-roots"] dns-native-certs = ["dns", "agnostic/dns-native-certs"] dnssec-openssl = ["dns", "agnostic/dnssec-openssl"] dnssec-ring = ["dnssec", "agnostic/dnssec-ring"] dnssec = ["dns", "agnostic/dnssec"] smol_str = ["dep:smol_str", "alloc", "transformable/smol_str"] # enable node address resolver resolver = ["async", "crossbeam-skiplist/default", "std"] serde = [ "dep:serde", "smol_str?/serde", "humantime-serde", "hickory-resolver?/serde-config", ] rkyv = ["dep:rkyv"] transformable = ["dep:transformable"] # enable tracing tracing = ["dep:tracing"] [dependencies] cheap-clone = { version = "0.1", default-features = false, features = [ "smol_str", ] } agnostic-lite = { version = "0.3", optional = true } agnostic = { version = "0.3", optional = true } byteorder = "1.5" futures = { version = "0.3", default-features = false, optional = true } thiserror = { version = "1", optional = true } transformable = { version = "0.1", default-features = false, optional = true } serde = { version = "1", default-features = false, optional = true, features = [ "derive", ] } humantime-serde = { version = "1", default-features = false, optional = true } smol_str = { version = "0.2", default-features = false, optional = true } hickory-resolver = { version = "0.24", default-features = false, optional = true } crossbeam-skiplist = { version = "0.1", optional = true } tracing = { version = "0.1", optional = true } rkyv = { version = "0.7", optional = true, features = [ "smol_str", "validation", ] } [dev-dependencies] tokio = { version = "1", features = ["full"] } rand = "0.8" serde_json = "1" bincode = "1" agnostic = { version = "0.3", features = ["tokio", "net"] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"]