4 个版本
0.2.0 | 2023年11月11日 |
---|---|
0.1.7 | 2023年1月30日 |
#4 in #div
9KB
73 行
nopanick-rs (无恐慌!)
Rust 中加、减、乘、除运算符的无恐慌库。
示例
use nopanick::*;
fn main() {
unsafe {
println!("{}", div!(sub!(add!(100i32, 10i32), 5i32), 5i32));
}
}
构建
仅发布以优化效果
cargo build --release
联系我
- 网站: https://github.com/hwoy
- 电子邮件: [email protected]
- Facebook: https://127.0.0.1/dead-root
lib.rs
:
nopanick-rs (无恐慌!)
Rust 中加、减、乘、除运算符的无恐慌库。
生成更少的指令,适合裸机或嵌入式系统。
示例#1
use nopanick::*;
fn main() {
unsafe {
println!("{}", div!(sub!(add!(100i32, 10i32), 5i32), 5i32));
}
}
示例#2
如何使用 .unwarp_nop()
与 with Option<T>
use nopanick::*;
fn rem(a: u32, b: u32) -> Option<u32> {
if b != 0 {
Some(a % b)
} else {
None
}
}
fn main() {
let a = 4u32;
let b = 3u32;
let r = unsafe { rem(a, b).unwrap_nop() };
println!("{} % {} ={}", a, b, r);
}
示例#3
如果解包了 None
,则会发生未定义行为 (UB)。
use nopanick::*;
fn rem(a: u32, b: u32) -> Option<u32> {
if b != 0 {
Some(a % b)
} else {
None
}
}
fn main() {
let a = 4u32;
let b = 0u32;
let r = unsafe { rem(a, b).unwrap_nop() };
println!("{} % {} ={}", a, b, r);
}
//error: process didn't exit successfully: `target\debug\examples\option.exe` (exit code: 0xc000001d, STATUS_ILLEGAL_INSTRUCTION) Illegal instruction