t_rust_less_lib/clipboard/
error.rs

1use std::fmt;
2
3#[derive(Debug)]
4pub enum ClipboardError {
5  Unavailable,
6  Mutex(String),
7  Other(String),
8}
9
10impl fmt::Display for ClipboardError {
11  fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12    match self {
13      ClipboardError::Unavailable => write!(f, "Clipboard not available"),
14      ClipboardError::Mutex(error) => write!(f, "Clipboard mutex error: {}", error),
15      ClipboardError::Other(error) => write!(f, "Clipboard error: {}", error),
16    }
17  }
18}
19
20pub type ClipboardResult<T> = Result<T, ClipboardError>;
21
22#[cfg(all(unix, feature = "with_x11"))]
23impl From<std::ffi::NulError> for ClipboardError {
24  fn from(error: std::ffi::NulError) -> Self {
25    ClipboardError::Other(format!("{}", error))
26  }
27}
28
29#[cfg(all(unix, feature = "with_x11"))]
30impl From<std::env::VarError> for ClipboardError {
31  fn from(error: std::env::VarError) -> Self {
32    ClipboardError::Other(format!("{}", error))
33  }
34}
35
36#[cfg(all(unix, feature = "with_wayland"))]
37impl From<wayland_client::ConnectError> for ClipboardError {
38  fn from(error: wayland_client::ConnectError) -> Self {
39    match error {
40      wayland_client::ConnectError::NoCompositorListening => ClipboardError::Unavailable,
41      wayland_client::ConnectError::NoWaylandLib => ClipboardError::Unavailable,
42      err => ClipboardError::Other(format!("{}", err)),
43    }
44  }
45}
46
47impl<T> From<std::sync::PoisonError<T>> for ClipboardError {
48  fn from(error: std::sync::PoisonError<T>) -> Self {
49    ClipboardError::Mutex(format!("{}", error))
50  }
51}