diff --git a/src/anything.rs b/src/anything.rs index 13c8403..39945c0 100644 --- a/src/anything.rs +++ b/src/anything.rs @@ -18,27 +18,30 @@ pub struct Anything { impl Anything { - #[track_caller] + #[cfg_attr(debug_assertions,track_caller)] pub fn new(error: T) -> Anything { Anything { error: Box::new(error), + #[cfg(debug_assertions)] origin: Location::caller(), } } - #[track_caller] + #[cfg_attr(debug_assertions,track_caller)] pub fn new_error(error: T) -> Result<(), Anything> { Err(Anything { error: Box::new(error), + #[cfg(debug_assertions)] origin: Location::caller(), }) } - #[track_caller] + #[cfg_attr(debug_assertions,track_caller)] pub fn assert(error_if_false: bool, error: T) -> Result<(), Anything> { if error_if_false { return Ok(()) } Err(Anything { error: Box::new(error), + #[cfg(debug_assertions)] origin: Location::caller(), }) } @@ -58,34 +61,43 @@ impl Anything { impl Display for Anything { fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result { - write!(f, + #[cfg(debug_assertions)] + let v = write!(f, "[{}:{}:{}] {:?}", self.origin.file(), self.origin.line(), self.origin.column(), self.error.format() - ) + ); + #[cfg(not(debug_assertions))] + let v = write!(f, "{:?}", self.error.format()); + v } } impl Debug for Anything { fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result { - write!(f, - "'{:?}'\n at {}:{}:{}", - self.error.format(), - self.origin.file(), - self.origin.line(), - self.origin.column() - ) + #[cfg(debug_assertions)] + let v = write!(f, + "'{:?}'\n at {}:{}:{}", + self.error.format(), + self.origin.file(), + self.origin.line(), + self.origin.column() + ); + #[cfg(not(debug_assertions))] + let v = write!(f, "{:?}", self.error.format()); + v } } impl From for Anything { - #[track_caller] + #[cfg_attr(debug_assertions,track_caller)] fn from(value: T) -> Self { Anything { error: Box::new(value), + #[cfg(debug_assertions)] origin: Location::caller(), } } diff --git a/tests/test.rs b/tests/test.rs index ddf4bb6..2c94bd9 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -1,3 +1,4 @@ +use std::fs::File; use anything::{Anything, Nothing}; pub fn func_1() -> Result<(),Anything> { @@ -15,9 +16,10 @@ pub fn func_3() -> Result<(),Nothing> { Ok(()) } -fn func_4() -> Anything { - let a= std::io::Error::last_os_error(); - Anything::from(a) +fn func_4() -> Result<(), Anything> { + let _ = Anything::from(File::open("afsfasfd").unwrap_err()); + let _ = File::open("afsfasfd")?; + Ok(()) } fn func_5() -> Result<(), Anything> {