2 releases
0.1.1 | Dec 3, 2022 |
---|---|
0.1.0 | Dec 3, 2022 |
#1035 in Embedded development
6KB
80 lines
u32err
This crate implements the core::ops::Try
trait with a thin wrapper over u32
.
You may use it to implement ergonomic error handling for FFI functions that return non-zero values on failure,
or as a lightweight Result
.
Example
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
This crate implements the core::ops::Try
trait with a thin wrapper over [u32
].
You may use it to implement ergonomic error handling for FFI functions that return non-zero values on failure,
or as a lightweight Result
.
Example
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)
}