2 个版本
0.1.1 | 2022 年 9 月 18 日 |
---|---|
0.1.0 | 2022 年 9 月 17 日 |
#1117 in 开发工具
7KB
assert_eq_all 宏
接受任意数量的参数,如果它们不相等则引发恐慌。参数的数量也可以是奇数。每个参数将与前面的和后面的进行比较。
此外,该宏会打印出导致错误的参数名称,而不仅仅是它们的值。
如果您想测试不同的实现是否确实返回相同的结果,这很有用。
Hello world!
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `20`,
right: `21`:
(my_func_impl_6(x) != my_func_impl_7(x))', main.rs:18:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
main.rs
use assert_eq_all::{assert_eq_all, assert_ne_all};
// Benchmarked functions
fn my_func_impl_1(x: u32) -> u32 { x }
fn my_func_impl_2(x: u32) -> u32 { x }
fn my_func_impl_3(x: u32) -> u32 { x }
fn my_func_impl_4(x: u32) -> u32 { x }
fn my_func_impl_5(x: u32) -> u32 { x }
fn my_func_impl_6(x: u32) -> u32 { x }
fn my_func_impl_7(x: u32) -> u32 { x + 1 }
// ^^^
// An error in one of the options for an alternative
// implementation of the algorithm.
fn main() {
println!("Hello world!");
let x = 20;
assert_eq_all!(
my_func_impl_1(x), // 20
my_func_impl_2(x), // 20
my_func_impl_3(x), // 20
my_func_impl_4(x), // 20
my_func_impl_5(x), // 20
my_func_impl_6(x), // 20
my_func_impl_7(x), // 21 <--
);
assert_ne_all!(
my_func_impl_6(x), // 20
my_func_impl_7(x), // 21
);
}