zbus 5.1.0

API for D-Bus communication
Documentation
[package]
name = "zbus"
version = "5.1.0"
authors = ["Zeeshan Ali Khan <zeeshanak@gnome.org>"]
edition = "2021"
rust-version = "1.80"

description = "API for D-Bus communication"
repository = "https://github.com/dbus2/zbus/"
keywords = ["D-Bus", "DBus", "IPC"]
license = "MIT"
categories = ["os::unix-apis"]
readme = "README.md"

[features]
default = ["async-io", "blocking-api"]
uuid = ["zvariant/uuid"]
url = ["zvariant/url"]
time = ["zvariant/time"]
chrono = ["zvariant/chrono"]
heapless = ["zvariant/heapless"]
# Enables ser/de of `Option<T>` as an array of 0 or 1 elements.
option-as-array = ["zvariant/option-as-array"]
camino = ["zvariant/camino"]
# Enables API that is only needed for bus implementations (enables `p2p`).
bus-impl = ["p2p"]
# Enables API that is only needed for peer-to-peer (p2p) connections.
p2p = ["dep:rand"]
async-io = [
  "dep:async-io",
  "async-executor",
  "async-task",
  "async-lock",
  "async-fs",
  "blocking",
  "futures-util/io",
]
tokio = ["dep:tokio"]
vsock = ["dep:vsock", "dep:async-io"]
tokio-vsock = ["dep:tokio-vsock", "tokio"]
# Enable blocking API (default).
blocking-api = ["zbus_macros/blocking-api"]
# Enable `serde_bytes` feature of `zvariant`.
serde_bytes = ["zvariant/serde_bytes"]

[dependencies]
zbus_macros = { path = "../zbus_macros", version = "=5.1.0" }
zvariant = { path = "../zvariant", version = "5.0.0", default-features = false, features = [
  "enumflags2",
] }
zbus_names = { path = "../zbus_names", version = "4.0" }
serde = { version = "1.0.200", features = ["derive"] }
serde_repr = "0.1.19"
enumflags2 = { version = "0.7.9", features = ["serde"] }
futures-core = "0.3.30"
futures-util = { version = "0.3.30", default-features = false, features = [
  "sink",
  "std",
] }
async-broadcast = "0.7.0"
hex = "0.4.3"
ordered-stream = "0.2"
rand = { version = "0.8.5", optional = true }
event-listener = "5.3.0"
static_assertions = "1.1.0"
async-trait = "0.1.80"
xdg-home = "1.1.0"
tracing = "0.1.40"
winnow = "0.6"

# Optional and target-specific dependencies.

async-io = { version = "2.3.2", optional = true }
async-lock = { version = "3.3.0", optional = true }
async-executor = { version = "1.11.0", optional = true }
blocking = { version = "1.6.0", optional = true }
async-task = { version = "4.7.1", optional = true }
async-fs = { version = "2.1.2", optional = true }
# FIXME: We should only enable process feature for Mac OS. See comment on async-process below for why we can't.
tokio = { version = "1.37.0", optional = true, features = [
  "rt",
  "net",
  "time",
  "fs",
  "io-util",
  "process",
  "sync",
  "tracing",
] }
vsock = { version = "0.5.0", optional = true }
tokio-vsock = { version = "0.5", optional = true }

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.59", features = [
  "Win32_Foundation",
  "Win32_Security_Authorization",
  "Win32_System_Memory",
  "Win32_Networking",
  "Win32_Networking_WinSock",
  "Win32_NetworkManagement",
  "Win32_NetworkManagement_IpHelper",
  "Win32_System_IO",
  "Win32_System_Threading",
] }
uds_windows = "1.1.0"

[target.'cfg(unix)'.dependencies]
nix = { version = "0.29", default-features = false, features = [
  "socket",
  "uio",
  "user",
] }

[target.'cfg(target_family = "unix")'.dependencies]
# FIXME: This should only be enabled if async-io feature is enabled but currently
# Cargo doesn't provide a way to do that for only specific target OS: https://github.com/rust-lang/cargo/issues/1197.
async-process = "2.2.2"

[target.'cfg(any(target_os = "macos", windows))'.dependencies]
async-recursion = "1.1.1"

[dev-dependencies]
zbus_xml = { path = "../zbus_xml", version = "5.0.0" }
doc-comment = "0.3.3"
futures-util = "0.3.30" # activate default features
ntest = "0.9.2"
test-log = { version = "0.2.16", features = [
  "trace",
], default-features = false }
tokio = { version = "1.37.0", features = [
  "macros",
  "rt-multi-thread",
  "fs",
  "io-util",
  "net",
  "sync",
  "time",
  "test-util",
] }
tracing-subscriber = { version = "0.3.18", features = [
  "env-filter",
  "fmt",
  "ansi",
], default-features = false }
tempfile = "3.10.1"
criterion = "0.5.1"

[package.metadata.docs.rs]
all-features = true
targets = ["x86_64-unknown-linux-gnu"]

[lints]
workspace = true

[lib]
bench = false

[[bench]]
name = "benchmarks"
harness = false

[[example]]
name = "screen-brightness"
path = "examples/screen-brightness.rs"
required-features = ["blocking-api"]