1use thiserror::Error;
2
3#[cfg(all(target_family = "unix", not(target_os = "macos")))]
4#[derive(Debug, Error)]
5pub enum DIError {
6 #[error("{0}")]
7 Error(String),
8 #[error(transparent)]
9 StdStrUtf8Error(#[from] std::str::Utf8Error),
10 #[error(transparent)]
11 XcbError(#[from] xcb::Error),
12 #[error(transparent)]
13 XcbConnError(#[from] xcb::ConnError),
14 #[error(transparent)]
15 SmithayClientToolkitClientDispatchError(
16 #[from] smithay_client_toolkit::reexports::client::DispatchError,
17 ),
18 #[error(transparent)]
19 SmithayClientToolkitClientConnectError(
20 #[from] smithay_client_toolkit::reexports::client::ConnectError,
21 ),
22}
23
24#[cfg(target_os = "macos")]
25#[derive(Debug, Error)]
26pub enum DIError {
27 #[error("{0}")]
28 Error(String),
29}
30
31#[cfg(target_os = "windows")]
32#[derive(Debug, Error)]
33pub enum DIError {
34 #[error("{0}")]
35 Error(String),
36 #[error(transparent)]
37 WindowsCoreError(#[from] windows::core::Error),
38 #[error(transparent)]
39 Utf16Error(#[from] widestring::error::Utf16Error),
40}
41
42impl DIError {
43 pub fn new<S: ToString>(err: S) -> Self {
44 DIError::Error(err.to_string())
45 }
46}
47
48pub type DIResult<T> = Result<T, DIError>;