#io-error #error #io #serde

io_err

改进的易用性的可序列化 std::io::Error

1 个不稳定版本

0.1.0 2022年5月23日

#2722Rust模式


3 个crate中使用 (通过 canary)

MIT 协议

26KB
452

io_err

std::io::Errorstd::io::Result 的可序列化版本,具有更好的易用性。

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(())
}

依赖项

~0.4–1MB
~22K SLoC