io_err 0.1.0

serializable `std::io::Error` with improved ergonomics
Documentation
  • Coverage
  • 65.71%
    46 out of 70 items documented1 out of 25 items with examples
  • Size
  • Source code size: 26.78 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.72 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 20s Average build duration of successful builds.
  • all releases: 20s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • znx3p0/io_err
    1 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • znx3p0

io_err

A serializable version of std::io::Error and std::io::Result with much better ergonomics.

fn test() -> Result<()> {
    let res: u32 = may_error()?;
    let another: Result<(), &'static str> = Err("error!");
    let map_another: Result<()> = another.map_err(err!(@other))?;
    err!((other, "error"))?; // == err!(("error"))?;
    Ok(())
}

fn return_error() -> Result<()> {
    err!(("unknown")) // == Err(err!("unknown"))
}

fn return_error_with_kind() -> Result<()> {
    err!((permission_denied, "unknown")) // == Err(err!(permission_denied, "unknown"))
}

fn simple_error() -> Result<()> {
    let err: Error = err!("unknown");
    Err(err)
}

fn simple_error_with_kind() -> Result<()> {
    let err: Error = err!(permission_denied, "unknown");
    Err(err)
}

fn errors() -> Result<()> {
    let err = "unknown";
    bail!("error {:?}", err); // == return err!(("error {:?}", err));
    Ok(())
}

fn permission_denied() -> Result<()> {
    let err = "denied >:(";
    bail!(permission_denied, "error {:?}", err);
    Ok(())
}