A serializable version of std::io::Error
and std::io::Result
with much better ergonomics.
```rust fn test() -> Result<()> { let res: u32 = mayerror()?; let another: Result<(), &'static str> = Err("error!"); let mapanother: Result<()> = another.map_err(err!(@other))?; err!((other, "error"))?; // == err!(("error"))?; Ok(()) }
fn return_error() -> Result<()> { err!(("unknown")) // == Err(err!("unknown")) }
fn returnerrorwithkind() -> Result<()> { err!((permissiondenied, "unknown")) // == Err(err!(permission_denied, "unknown")) }
fn simple_error() -> Result<()> { let err: Error = err!("unknown"); Err(err) }
fn simpleerrorwithkind() -> Result<()> { let err: Error = err!(permissiondenied, "unknown"); Err(err) }
fn errors() -> Result<()> { let err = "unknown"; bail!("error {:?}", err); // == return err!(("error {:?}", err)); Ok(()) }
fn permissiondenied() -> Result<()> { let err = "denied >:("; bail!(permissiondenied, "error {:?}", err); Ok(()) } ```