nydus-error

Crates.ionydus-error
lib.rsnydus-error
version0.2.3
sourcesrc
created_at2021-08-15 08:10:59.421542
updated_at2023-01-30 08:18:06.913329
descriptionError handling utilities for Nydus Image Service
homepagehttps://nydus.dev/
repositoryhttps://github.com/dragonflyoss/image-service
max_upload_size
id437171
size23,189
Peng Tao (bergwolf)

documentation

README

nydus-error

The nydus-error crate is a collection of helper utilities to handle error codes for Nydus 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

[dependencies]
nydus-error = "*"

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

Examples

  • Return an error with backtracing information:
fn check_size(size: usize) -> std::io::Result<()> {
    if size > 0x1000 {
        return Err(einval!());
    }

    Ok(())
}
  • Put an error message into an ErrorHolder object.
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 or BSD-3-Clause.

Commit count: 3109

cargo fmt