t-rust-less-lib 0.2.16

Password manager library
Documentation
use std::fmt;

#[derive(Debug)]
pub enum ClipboardError {
  Unavailable,
  Mutex(String),
  Other(String),
}

impl fmt::Display for ClipboardError {
  fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    match self {
      ClipboardError::Unavailable => write!(f, "Clipboard not available"),
      ClipboardError::Mutex(error) => write!(f, "Clipboard mutex error: {}", error),
      ClipboardError::Other(error) => write!(f, "Clipboard error: {}", error),
    }
  }
}

pub type ClipboardResult<T> = Result<T, ClipboardError>;

#[cfg(all(unix, feature = "with_x11"))]
impl From<std::ffi::NulError> for ClipboardError {
  fn from(error: std::ffi::NulError) -> Self {
    ClipboardError::Other(format!("{}", error))
  }
}

#[cfg(all(unix, feature = "with_x11"))]
impl From<std::env::VarError> for ClipboardError {
  fn from(error: std::env::VarError) -> Self {
    ClipboardError::Other(format!("{}", error))
  }
}

#[cfg(all(unix, feature = "with_wayland"))]
impl From<wayland_client::ConnectError> for ClipboardError {
  fn from(error: wayland_client::ConnectError) -> Self {
    match error {
      wayland_client::ConnectError::NoCompositorListening => ClipboardError::Unavailable,
      wayland_client::ConnectError::NoWaylandLib => ClipboardError::Unavailable,
      err => ClipboardError::Other(format!("{}", err)),
    }
  }
}

impl<T> From<std::sync::PoisonError<T>> for ClipboardError {
  fn from(error: std::sync::PoisonError<T>) -> Self {
    ClipboardError::Mutex(format!("{}", error))
  }
}