From d0e6a6271c6900907ff87548e3ed4455d249eade Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 19 Mar 2025 22:27:38 +0100 Subject: [PATCH] join: move to thiserror --- src/uu/join/Cargo.toml | 1 + src/uu/join/src/join.rs | 28 +++++++--------------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/src/uu/join/Cargo.toml b/src/uu/join/Cargo.toml index d9835833f..a9689e95e 100644 --- a/src/uu/join/Cargo.toml +++ b/src/uu/join/Cargo.toml @@ -20,6 +20,7 @@ path = "src/join.rs" clap = { workspace = true } uucore = { workspace = true } memchr = { workspace = true } +thiserror = { workspace = true } [[bin]] name = "join" diff --git a/src/uu/join/src/join.rs b/src/uu/join/src/join.rs index 19e74aa5f..593100b7c 100644 --- a/src/uu/join/src/join.rs +++ b/src/uu/join/src/join.rs @@ -9,14 +9,13 @@ use clap::builder::ValueParser; use clap::{Arg, ArgAction, Command}; use memchr::{memchr_iter, memmem::Finder, Memchr3}; use std::cmp::Ordering; -use std::error::Error; use std::ffi::OsString; -use std::fmt::Display; use std::fs::File; use std::io::{stdin, stdout, BufRead, BufReader, BufWriter, Split, Stdin, Write}; use std::num::IntErrorKind; #[cfg(unix)] use std::os::unix::ffi::OsStrExt; +use thiserror::Error; use uucore::display::Quotable; use uucore::error::{set_exit_code, FromIo, UError, UResult, USimpleError}; use uucore::line_ending::LineEnding; @@ -25,35 +24,22 @@ use uucore::{format_usage, help_about, help_usage}; const ABOUT: &str = help_about!("join.md"); const USAGE: &str = help_usage!("join.md"); -#[derive(Debug)] +#[derive(Debug, Error)] enum JoinError { - IOError(std::io::Error), + #[error("io error: {0}")] + IOError(#[from] std::io::Error), + + #[error("{0}")] UnorderedInput(String), } +// If you still need the UError implementation for compatibility: impl UError for JoinError { fn code(&self) -> i32 { 1 } } -impl Error for JoinError {} - -impl Display for JoinError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::IOError(e) => write!(f, "io error: {e}"), - Self::UnorderedInput(e) => f.write_str(e), - } - } -} - -impl From for JoinError { - fn from(error: std::io::Error) -> Self { - Self::IOError(error) - } -} - #[derive(Copy, Clone, PartialEq)] enum FileNum { File1,