t_rust_less_lib/clipboard/
error.rs1use 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}