3个版本
0.1.2 | 2023年6月20日 |
---|---|
0.1.1 | 2023年6月19日 |
0.1.0 | 2023年6月19日 |
#389 in 测试
7KB
#[unimpl]
更好的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