2个版本
0.1.1 | 2022年12月3日 |
---|---|
0.1.0 | 2022年12月3日 |
#947 in 嵌入式开发
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)
}