Derive Macro zbus_macros::DBusError[][src]

#[derive(DBusError)]
{
    // Attributes available to this derive:
    #[dbus_error]
}
Expand description

Derive macro for defining a D-Bus error.

This macro helps to implement an Error suitable for D-Bus handling with zbus. It will expand an enum E with Error traits implementation, and From<zbus::Error>. The latter makes it possible for you to declare proxy methods to directly return this type, rather than zbus::Error. However, for this to work, we require a variant by the name ZBus that contains an unnamed field of type zbus::Error.

Additionally, the derived impl E will provide the following convenience methods:

  • name(&self) - get the associated D-Bus error name.

  • description(&self) - get the associated error description (the first argument of an error message)

  • reply(&self, &zbus::Connection, &zbus::Message) - send this error as reply to the message.

Note: it is recommended that errors take a single argument String which describes it in a human-friendly fashion (support for other arguments is limited or TODO currently).

Example

use zbus_macros::DBusError;

#[derive(DBusError, Debug)]
#[dbus_error(prefix = "org.myservice.App")]
enum Error {
    ZBus(zbus::Error),
    FileNotFound(String),
    OutOfMemory,
}