10 个版本
0.3.5 | 2022 年 4 月 17 日 |
---|---|
0.3.4 | 2022 年 4 月 17 日 |
0.2.1 | 2022 年 4 月 16 日 |
0.1.1 | 2022 年 4 月 16 日 |
949 在 Rust 模式 中排名
每月下载量 23,379
在 68 个crate(7 个直接) 中使用
37KB
275 行代码(不含注释)
assert_unordered
用于无序集合的 assert_eq
的直接替代品
此宏在集合的顺序不重要的情况下非常有用,即使它们总是以相同的顺序出现。这是因为 stdlib 的 assert_eq
会显示左边的整个集合和右边的整个集合,并让用户自己扫描差异。相比之下,这个 crate 仅与集合(实现 IntoIterator
的类型)一起工作,因此只能显示差异(下面是一个输出示例)。
注意:从 0.3.2 版本开始,默认输出是彩色,类似于 pretty_assertions
用法
注意:可以使用 no-default-features
来禁用彩色输出(并启用 no-std
支持)
[dev-dependencies]
assert_unordered = "0.3"
哪个宏?
TLDR; - 如果无法满足特质要求,则首选 assert_eq_unordered_sort
- assert_eq_unordered
- 仅需要元素上的
Debug
和PartialEq
- 集合级别相等性检查,如果不相等,则回退到逐项比较(O(n^2))
- 仅需要元素上的
- assert_eq_unordered_sort
- 需要元素上的
Debug
、Eq
和Ord
- 集合级别相等性检查,如果不相等,则排序并再次比较,如果仍然不相等,则回退到逐项比较(O(n^2))
- 需要元素上的
示例
use assert_unordered::assert_eq_unordered;
#[derive(Debug, PartialEq)]
struct MyType(i32);
fn main() {
let expected = vec![MyType(1), MyType(2), MyType(4), MyType(5)];
let actual = vec![MyType(2), MyType(0), MyType(4)];
assert_eq_unordered!(expected, actual);
}
输出
许可证
此项目可以选择性地在以下许可证下使用
- Apache 许可证第 2 版 (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)