#failure #error #no-alloc #error-handling #no-std

nightly no-std u32err

一种优雅的FFI函数错误类型(其中非零表示失败)

2个版本

0.1.1 2022年12月3日
0.1.0 2022年12月3日

#947 in 嵌入式开发

MIT许可证

6KB
80

u32err

此crate通过在u32上包装一层实现了core::ops::Try特质。

您可以使用它为返回非零值的FFI函数实现优雅的错误处理,或者作为轻量级的Result

示例

use u32err::ErrCode;
extern "C" {
    /// This is a function that does something (via FFI).
    ///
    /// It returns either a 0 on success, or a non-zero number on failure.
    /// The real FFI signature of this function returns [`u32`], but the types are compatible.
    fn returns_zero_on_success() -> ErrCode;
}

fn foo() -> ErrCode {
    unsafe {
        returns_zero_on_success()?;
    }
    ErrCode(0)
}

lib.rs:

u32err

此crate通过在core::ops::Try特质上包装一层实现了u32

您可以使用它为返回非零值的FFI函数实现优雅的错误处理,或者作为轻量级的Result

示例

use u32err::ErrCode;
extern "C" {
    /// This is a function that does something (via FFI).
    ///
    /// It returns either a 0 on success, or a non-zero number on failure.
    /// The real FFI signature of this function returns [`u32`], but the types are compatible.
    fn returns_zero_on_success() -> ErrCode;
}

fn foo() -> ErrCode {
    unsafe {
        returns_zero_on_success()?;
    }
    ErrCode(0)
}

无运行时依赖