diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-18 02:49:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-18 02:49:42 +0000 |
commit | 837b550238aa671a591ccf282dddeab29cadb206 (patch) | |
tree | 914b6b8862bace72bd3245ca184d374b08d8a672 /vendor/criterion/src/error.rs | |
parent | Adding debian version 1.70.0+dfsg2-1. (diff) | |
download | rustc-837b550238aa671a591ccf282dddeab29cadb206.tar.xz rustc-837b550238aa671a591ccf282dddeab29cadb206.zip |
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/criterion/src/error.rs')
-rwxr-xr-x | vendor/criterion/src/error.rs | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/vendor/criterion/src/error.rs b/vendor/criterion/src/error.rs new file mode 100755 index 000000000..9b7eb17b1 --- /dev/null +++ b/vendor/criterion/src/error.rs @@ -0,0 +1,73 @@ +use csv::Error as CsvError; +use serde_json::Error as SerdeError; +use std::error::Error as StdError; +use std::fmt; +use std::io; +use std::path::PathBuf; + +#[allow(clippy::enum_variant_names)] +#[derive(Debug)] +pub enum Error { + AccessError { + path: PathBuf, + inner: io::Error, + }, + CopyError { + from: PathBuf, + to: PathBuf, + inner: io::Error, + }, + SerdeError { + path: PathBuf, + inner: SerdeError, + }, + CsvError(CsvError), +} +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Error::AccessError { path, inner } => { + write!(f, "Failed to access file {:?}: {}", path, inner) + } + Error::CopyError { from, to, inner } => { + write!(f, "Failed to copy file {:?} to {:?}: {}", from, to, inner) + } + Error::SerdeError { path, inner } => write!( + f, + "Failed to read or write file {:?} due to serialization error: {}", + path, inner + ), + Error::CsvError(inner) => write!(f, "CSV error: {}", inner), + } + } +} +impl StdError for Error { + fn description(&self) -> &str { + match self { + Error::AccessError { .. } => "AccessError", + Error::CopyError { .. } => "CopyError", + Error::SerdeError { .. } => "SerdeError", + Error::CsvError(_) => "CsvError", + } + } + + fn cause(&self) -> Option<&dyn StdError> { + match self { + Error::AccessError { inner, .. } => Some(inner), + Error::CopyError { inner, .. } => Some(inner), + Error::SerdeError { inner, .. } => Some(inner), + Error::CsvError(inner) => Some(inner), + } + } +} +impl From<CsvError> for Error { + fn from(other: CsvError) -> Error { + Error::CsvError(other) + } +} + +pub type Result<T> = ::std::result::Result<T, Error>; + +pub(crate) fn log_error(e: &Error) { + error!("error: {}", e); +} |