Skip to main content

xdg_portal/
errors.rs

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}