Skip to main content

zbus/
lib.rs

1#![deny(rust_2018_idioms)]
2#![doc(
3    html_logo_url = "https://raw.githubusercontent.com/z-galaxy/zbus/9f7a90d2b594ddc48b7a5f39fda5e00cd56a7dfb/logo.png"
4)]
5#![doc = include_str!("../README.md")]
6#![doc(test(attr(
7    warn(unused),
8    deny(warnings),
9    allow(dead_code),
10    // W/o this, we seem to get some bogus warning about `extern crate zbus`.
11    allow(unused_extern_crates),
12)))]
13
14#[cfg(doctest)]
15mod doctests {
16    // Repo README.
17    doc_comment::doctest!("../../README.md");
18    // Book markdown checks
19    doc_comment::doctest!("../../book/src/client.md");
20    doc_comment::doctest!("../../book/src/concepts.md");
21    // The connection chapter contains a p2p example.
22    #[cfg(feature = "p2p")]
23    doc_comment::doctest!("../../book/src/connection.md");
24    doc_comment::doctest!("../../book/src/contributors.md");
25    doc_comment::doctest!("../../book/src/introduction.md");
26    doc_comment::doctest!("../../book/src/service.md");
27    #[cfg(feature = "blocking-api")]
28    doc_comment::doctest!("../../book/src/blocking.md");
29    doc_comment::doctest!("../../book/src/faq.md");
30}
31
32#[cfg(all(not(feature = "async-io"), not(feature = "tokio")))]
33mod error_message {
34    #[cfg(windows)]
35    compile_error!(
36        "Either \"async-io\" (default) or \"tokio\" must be enabled. On Windows \"async-io\" is (currently) required for UNIX socket support"
37    );
38
39    #[cfg(not(windows))]
40    compile_error!("Either \"async-io\" (default) or \"tokio\" must be enabled.");
41}
42
43#[cfg(all(
44    any(feature = "vsock", feature = "tokio-vsock"),
45    not(target_os = "linux")
46))]
47compile_error!("The \"vsock\" and \"tokio-vsock\" features are only supported on Linux.");
48
49#[cfg(windows)]
50mod win32;
51
52mod dbus_error;
53pub use dbus_error::*;
54
55mod error;
56pub use error::*;
57
58pub mod address;
59pub use address::Address;
60
61mod guid;
62pub use guid::*;
63
64pub mod message;
65pub use message::Message;
66
67pub mod connection;
68/// Alias for `connection` module, for convenience.
69pub use connection as conn;
70pub use connection::Connection;
71#[deprecated(
72    since = "5.0.0",
73    note = "Please use `connection::AuthMechanism` instead"
74)]
75pub use connection::handshake::AuthMechanism;
76
77mod message_stream;
78pub use message_stream::*;
79mod abstractions;
80pub use abstractions::*;
81
82pub mod match_rule;
83pub use match_rule::{MatchRule, OwnedMatchRule};
84
85pub mod proxy;
86pub use proxy::Proxy;
87
88pub mod object_server;
89pub use object_server::ObjectServer;
90
91mod utils;
92pub use utils::*;
93
94#[macro_use]
95pub mod fdo;
96
97#[cfg(feature = "blocking-api")]
98pub mod blocking;
99
100pub use zbus_macros::{DBusError, interface, proxy};
101
102// Required for the macros to function within this crate.
103extern crate self as zbus;
104
105// Macro support module, not part of the public API.
106#[doc(hidden)]
107pub mod export {
108    pub use async_trait;
109    pub use futures_core;
110    pub use ordered_stream;
111    pub use serde;
112}
113
114pub use zbus_names as names;
115pub use zvariant;