nydus-error 0.2.2

Error handling utilities for Nydus Image Service
Documentation
# nydus-error

The `nydus-error` crate is a collection of helper utilities to handle error codes for [`Nydus Image Service`](https://github.com/dragonflyoss/image-service) project, which provides:
- `macro define_error_macro!()` to optionally augment Posix errno with backtrace information.
- `macro einval!(), enoent!()` etc for commonly used error codes.
- `struct ErrorHolder` to provide a circular buffer to hold the latest error messages.

## Support

**Platforms**:
- x86_64
- aarch64

**Operating Systems**:
- Linux

## Usage

Add `nydus-error` as a dependency in `Cargo.toml`

```toml
[dependencies]
nydus-error = "*"
```

Then add `extern crate nydus-error;` to your crate root if needed.

## Examples

- Return an error with backtracing information:

```rust
fn check_size(size: usize) -> std::io::Result<()> {
    if size > 0x1000 {
        return Err(einval!());
    }

    Ok(())
}
```

- Put an error message into an `ErrorHolder` object.

```rust
fn record_error(size: usize) {
    let mut holder = ErrorHolder::new(10, 80);
    let error_msg = "123456789";
    let r = holder.push(error_msg);

    assert_eq!(r.is_ok(), true);
    let _msg = holder.export().unwrap();
}
```

## License

This code is licensed under [Apache-2.0](LICENSE-APACHE) or [BSD-3-Clause](LICENSE-BSD-3-Clause).