3个版本

0.1.2 2023年6月20日
0.1.1 2023年6月19日
0.1.0 2023年6月19日

#389 in 测试

MIT/Apache

7KB

#[unimpl]

CI Crates.io

更好的unimplemented!宏,用于函数定义。

此宏可以帮助您更快地迭代代码库,并提供有关在测试期间调用了哪些函数的更准确反馈。它在开发期间非常有用。

如果没有unimpl,则必须显式指定确切原因,否则错误信息太通用

use panic_message::panic_message;

fn func(a: u32) -> u32 {
    unimplemented!();
}

let error = std::panic::catch_unwind(|| {
    func(42);
}).unwrap_err();

// in a bigger codebase it's not clear which function was called
assert_eq!(panic_message(&error), "not implemented");

使用unimpl,函数名将自动附加到错误信息中,并且可以完全省略函数体

use unimpl::unimpl;
use panic_message::panic_message;

#[unimpl]
pub fn func(a: u32) -> u32; // function body is autogenerated

let error = std::panic::catch_unwind(|| {
    func(42);
}).unwrap_err();

// function name is automatically appended
assert_eq!(panic_message(&error), "not implemented: func");

此宏也可以在impl块中使用

use unimpl::unimpl;
use panic_message::panic_message;

struct X;

impl X {
    /// This is a func.
    #[unimpl]
    pub fn func(a: u32) -> u32;
}

let error = std::panic::catch_unwind(|| {
    X::func(42);
}).unwrap_err();

assert_eq!(panic_message(&error), "not implemented: func");

许可证

此项目根据以下任一许可证授权:

任选其一。

贡献

除非您明确声明,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,应按上述方式双许可,不附加任何其他条款或条件。

依赖项

~325–790KB
~19K SLoC