1 个不稳定版本
0.1.0 | 2021年2月3日 |
---|
#2640 在 Rust模式
4KB
no-panics-whatsoever
静态断言Rust编写的程序不发生恐慌
此crate用于静态断言最终程序中不包含任何恐慌。如果存在恐慌且没有被优化掉,编译将产生以下错误
error: the static assertion that no panics are present has failed
注意:此crate仅在编译时使用no_std
才有效。
示例
#![no_std]
#![no_main]
#![feature(lang_items, test)]
extern crate libc;
extern crate no_panics_whatsoever;
#[lang = "eh_personality"]
extern "C" fn eh_personality() {}
fn foo(a: &[i32]) -> i32 {
// a.get(0).copied().unwrap_or(1) // Compiles fine!
a[0] // Fails to compile!
}
#[no_mangle] // ensure that this symbol is called `main` in the output
pub extern fn main(_argc: i32, _argv: *const *const u8) -> i32 {
foo(core::hint::black_box(&[42]))
}
lib.rs
:
此crate用于静态断言最终程序中不包含任何恐慌。如果存在恐慌且没有被优化掉,编译将产生以下错误
error: the static assertion that no panics are present has failed
注意:此crate仅在编译时使用no_std
才有效。
示例
#![no_std]
#![no_main]
#![feature(lang_items, test)]
extern crate libc;
extern crate no_panics_whatsoever;
#[lang = "eh_personality"]
extern "C" fn eh_personality() {}
fn foo(a: &[i32]) -> i32 {
// a.get(0).copied().unwrap_or(1) // Compiles fine!
a[0] // Fails to compile!
}
#[no_mangle] // ensure that this symbol is called `main` in the output
pub extern fn main(_argc: i32, _argv: *const *const u8) -> i32 {
foo(core::hint::black_box(&[42]))
}