zbus 4.1.1

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

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"]
uuid = ["zvariant/uuid"]
url = ["zvariant/url"]
time = ["zvariant/time"]
chrono = ["zvariant/chrono"]
# Enables ser/de of `Option<T>` as an array of 0 or 1 elements.
option-as-array = ["zvariant/option-as-array"]
# 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 = []
windows-gdbus = []
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"]

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_repr = "0.1.18"
zvariant = { path = "../zvariant", version = "4.0.0", default-features = false, features = [
  "enumflags2",
] }
zbus_names = { path = "../zbus_names", version = "3.0" }
zbus_macros = { path = "../zbus_macros", version = "=4.1.1" }
enumflags2 = { version = "0.7.9", features = ["serde"] }
derivative = "2.2"
async-io = { version = "2.3.1", optional = true }
futures-core = "0.3.30"
futures-sink = "0.3.30"
futures-util = { version = "0.3.30", default-features = false, features = [
  "sink",
  "std",
] }
async-lock = { version = "3.3.0", optional = true }
async-broadcast = "0.7.0"
async-executor = { version = "1.8.0", optional = true }
blocking = { version = "1.5.1", optional = true }
async-task = { version = "4.7.0", optional = true }
hex = "0.4.3"
ordered-stream = "0.2"
rand = "0.8.5"
sha1 = { version = "0.10.6", features = ["std"] }
event-listener = "5.1.0"
static_assertions = "1.1.0"
async-trait = "0.1.77"
async-fs = { version = "2.1.1", 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", optional = true, features = [
  "rt",
  "net",
  "time",
  "fs",
  "io-util",
  "process",
  "sync",
  "tracing",
] }
tracing = "0.1.40"
vsock = { version = "0.4.0", optional = true }
tokio-vsock = { version = "0.4", optional = true }
xdg-home = "1.1.0"

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

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

[target.'cfg(target_os = "macos")'.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.1.0"

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

[dev-dependencies]
zbus_xml = { path = "../zbus_xml", version = "4.0.0" }
doc-comment = "0.3.3"
futures-util = "0.3.30" # activate default features
ntest = "0.9.0"
test-log = { version = "0.2.14", features = [
  "trace",
], default-features = false }
tokio = { version = "1", features = [
  "macros",
  "rt-multi-thread",
  "fs",
  "io-util",
  "net",
  "sync",
] }
async-std = { version = "1.12.0", features = ["attributes"] }
tracing-subscriber = { version = "0.3.18", features = [
  "env-filter",
  "fmt",
  "ansi",
], default-features = false }
tempfile = "3.10.0"

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