3 个版本

0.0.2 2020 年 4 月 7 日
0.0.1 2020 年 4 月 7 日
0.0.0 2020 年 4 月 7 日

#2974Rust 模式

MIT/Apache

4KB
67

no_error

docs.rs docs

no_std + no_alloc Rust 提供的错误库

  • 宏将字符串字面量转换为 C 风格字符数组
  • 无需分配器
  • 支持非 C 字符串文本(即 len + 字符串)
  • 如果文本不是选项,则支持错误代码
use no_error::*;

extern "C" {
    fn print(x: const *u8);
}

const FAIL:ErrorCode = 42;

fn can_fail(i:i32) -> Result<()> {
    if i < 0 { 
        // programmatically appends a "/0" to end of static string
        error_message!("a failure happened","it happened in can_fail()")
    } else if i == 0 {
        // don't like c strings? supports failure codes too
        error_code!(FAIL)
    } else {
        // you don't have to specify the source if you don't want
        error_message!("a failure happened")
    }
}

fn main() {
    match can_fail() {
        Ok(_) => (),
        Err(a) => {
            print(a.cstr_description());
            print(a.cstr_source();
            if let Some(c) = a.code() {
                if c == FAIL {
                    print("secret of life".as_ptr());
                }
            }
        },
    };
}

依赖项

~5KB