1use std::fmt::{Display, Formatter};
2
3pub type Result<T> = std::result::Result<T, Error>;
4
5#[derive(Debug)]
6pub enum Error {
7 ZBus(zbus::Error),
8 ZVariant(zvariant::Error),
9 EmptyUniqueName,
10 SignalStreamClosed,
11 UnknownConnectivity(u32),
12}
13
14impl Display for Error {
15 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
16 match self {
17 Error::ZBus(err) => write!(f, "ZBus error: {}", err),
18 Error::ZVariant(err) => write!(f, "ZVariant error: {}", err),
19 Error::EmptyUniqueName => write!(f, "The unique name is empty"),
20 Error::SignalStreamClosed => write!(f, "The signal stream has been closed"),
21 Error::UnknownConnectivity(connectivity) => {
22 write!(f, "The connectivity is unknown: {}", connectivity)
23 }
24 }
25 }
26}
27
28impl std::error::Error for Error {
29 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
30 match self {
31 Error::ZBus(err) => Some(err),
32 Error::ZVariant(err) => Some(err),
33 _ => None,
34 }
35 }
36}
37
38impl From<zbus::Error> for Error {
39 fn from(value: zbus::Error) -> Error {
40 Error::ZBus(value)
41 }
42}
43
44impl From<zvariant::Error> for Error {
45 fn from(value: zvariant::Error) -> Error {
46 Error::ZVariant(value)
47 }
48}