better message display
This commit is contained in:
parent
6fa9a0d37d
commit
02cb3e74b6
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "ctxerr"
|
||||
version = "0.2.6"
|
||||
version = "0.2.7"
|
||||
authors = ["Andrey Tkachenko <andrey@aidev.ru>"]
|
||||
repository = "https://github.com/andreytkachenko/ctxerr.git"
|
||||
keywords = ["error", "handling", "thiserror", "context", "backtrace"]
|
||||
@ -15,5 +15,5 @@ resolver = "2"
|
||||
members = ["derive"]
|
||||
|
||||
[dependencies]
|
||||
ctxerr_derive = {version = "0.5.2", path = "derive"}
|
||||
ctxerr_derive = {version = "0.5.3", path = "derive"}
|
||||
thiserror = "1.0.40"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "ctxerr_derive"
|
||||
version = "0.5.2"
|
||||
version = "0.5.3"
|
||||
authors = ["Andrey Tkachenko <andrey@aidev.ru>"]
|
||||
repository = "https://github.com/andreytkachenko/ctxerr.git"
|
||||
keywords = ["error", "handling", "thiserror", "context", "backtrace"]
|
||||
|
@ -46,26 +46,22 @@ pub fn ctxerr(
|
||||
pub location: Option<&'static core::panic::Location<'static>>,
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for #base_name {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
writeln!(f, "{:?}: {}", self.kind, self.kind)?;
|
||||
if let Some(b) = &self.backtrace {
|
||||
writeln!(f, "backtrace: \n{}", b)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for #base_name {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:?}: {}", self.kind, self.kind)?;
|
||||
write!(f, "{}", self.kind)?;
|
||||
if let Some(loc) = self.location {
|
||||
writeln!(f, " file: {}:{}:{}", loc.file(), loc.line(), loc.column())?;
|
||||
writeln!(f, " in file: {}:{}:{}", loc.file(), loc.line(), loc.column())?;
|
||||
} else {
|
||||
writeln!(f)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for #base_name {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{}", &self)?;
|
||||
if let Some(b) = &self.backtrace {
|
||||
writeln!(f, "backtrace: \n{}", b)?;
|
||||
}
|
||||
@ -74,6 +70,7 @@ pub fn ctxerr(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
impl From<ErrorKind> for #base_name {
|
||||
#[track_caller]
|
||||
fn from(kind: ErrorKind) -> Self {
|
||||
|
@ -2,7 +2,7 @@ use ctxerr_derive::ctxerr;
|
||||
|
||||
#[ctxerr]
|
||||
pub enum ErrorKind {
|
||||
#[error("Some error {0}")]
|
||||
#[error("Error: {0}")]
|
||||
Error1(#[from] std::io::Error),
|
||||
}
|
||||
|
||||
@ -12,11 +12,13 @@ fn operation() -> Result<(), std::io::Error> {
|
||||
}
|
||||
|
||||
fn test() -> Result<(), Error> {
|
||||
Ok(operation()?)
|
||||
Ok(operation().map_err(ErrorKind::from)?)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
if let Err(err) = test() {
|
||||
println!("{}", err);
|
||||
|
||||
println!("{:?}", err);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user