3 个版本
使用旧的 Rust 2015
0.0.4 | 2015年1月12日 |
---|---|
0.0.3 | 2015年1月8日 |
0.0.2 | 2014年11月28日 |
2673 在 Rust 模式 中
14KB
248 行 代码
bassert
Rust 中的更好的 assert!
宏:bassert!
此宏通过手动解析 AST 来确定应进行的打印类型,从而消除了像 assert_eq
这样的宏的需求。它还可以做任何宏都无法做到的事情,例如打印出正在调用的函数的参数。
用法
#![feature(phase)]
#[phase(plugin)] extern crate bassert;
fn main() {
if cfg!(first) {
bassert!((1u8 + 1) << 2 < 3, "We are {} with math.", "AMAZING");
} else {
bassert!(stuff(123, "hello world"), "NOOO NOT STUFF!");
}
}
fn stuff(i: u32, j: &'static str) -> bool {
// STUFF
false
}
使用 --cfg first
运行它将打印
task '<main>' panicked at 'assertion failed: ( 1u8 + 1 ) << 2 < 3:
left: `( 1u8 + 1 ) << 2` = `8`
right: `3` = `3`
We are AMAZING with math.', test.rs:6
不使用该配置运行它将打印
task '<main>' panicked at 'assertion failed: stuff ( 123 , "hello world" ):
argument 0: 123
argument 1: hello world
NOOO NOT STUFF!', test.rs:8
致谢
这个库最初是基于 P1Start 的 assert_ng 开发的,尽管我重写了大部分内容,所以基本上没有剩下什么。测试在很大程度上保持不变,但 lib.rs 中的大部分内容都不是来自那个仓库。