From ae7718447d24ea0517e7154873c2b55fdd89538d Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 14 Dec 2021 17:44:40 -0500 Subject: drop thiserror --- Cargo.toml | 1 - src/error.rs | 65 ++++++++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 158fed6..fc9de8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,6 @@ license = "MIT" [dependencies] libc = "0.2.107" nix = "0.23.0" -thiserror = "1.0.30" async-io = { version = "1.6.0", optional = true } async-process = { version = "1.3.0", optional = true } diff --git a/src/error.rs b/src/error.rs index b4ca3d5..597d692 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,33 +1,68 @@ /// Error type for this crate -#[derive(thiserror::Error, Debug)] +#[derive(Debug)] pub enum Error { /// error making pty async - #[error("error making pty async")] - AsyncPty(#[source] std::io::Error), + AsyncPty(std::io::Error), /// error making pty async - #[error("error making pty async")] - AsyncPtyNix(#[source] nix::Error), + AsyncPtyNix(nix::Error), /// error creating pty - #[error("error creating pty")] - CreatePty(#[source] nix::Error), + CreatePty(nix::Error), /// error opening pts at \ - #[error("error opening pts at {1}")] - OpenPts(#[source] std::io::Error, std::path::PathBuf), + OpenPts(std::io::Error, std::path::PathBuf), /// error setting terminal size - #[error("error setting terminal size")] - SetTermSize(#[source] nix::Error), + SetTermSize(nix::Error), /// error spawning subprocess - #[error("error spawning subprocess")] - Spawn(#[source] std::io::Error), + Spawn(std::io::Error), /// error spawning subprocess - #[error("error spawning subprocess")] - SpawnNix(#[source] nix::Error), + SpawnNix(nix::Error), +} + +impl std::fmt::Display for Error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::AsyncPty(e) => { + write!(f, "error making pty async: {}", e) + } + Self::AsyncPtyNix(e) => { + write!(f, "error making pty async: {}", e) + } + Self::CreatePty(e) => { + write!(f, "error creating pty: {}", e) + } + Self::OpenPts(e, path) => { + write!(f, "error opening pts at {}: {}", path.display(), e) + } + Self::SetTermSize(e) => { + write!(f, "error setting terminal size: {}", e) + } + Self::Spawn(e) => { + write!(f, "error spawning subprocess: {}", e) + } + Self::SpawnNix(e) => { + write!(f, "error spawning subprocess: {}", e) + } + } + } +} + +impl std::error::Error for Error { + fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { + match self { + Self::AsyncPty(e) | Self::Spawn(e) | Self::OpenPts(e, _) => { + Some(e) + } + Self::AsyncPtyNix(e) | Self::SpawnNix(e) | Self::CreatePty(e) => { + Some(e) + } + Self::SetTermSize(e) => Some(e), + } + } } /// Convenience wrapper for `Result`s using [`Error`](Error) -- cgit v1.2.3-54-g00ecf