6 个版本 (3 个重大更改)
0.4.1 | 2024年1月14日 |
---|---|
0.4.0 | 2023年11月5日 |
0.3.0 | 2023年10月30日 |
0.2.0 | 2023年9月6日 |
0.1.1 | 2023年9月5日 |
#1168 in Rust 模式
21KB
549 行
any_cmp
支持动态类型比较。
此包的作者英语能力不佳。
如果文档难以阅读,请见谅。
这是什么?
此包提供可比较的特性和动态类型。
主要包括以下内容。
名称 | 摘要 |
---|---|
AnyEq |
类似于 std::cmp::Eq 。 |
AnyHash |
类似于 std::hash::Hash 。 |
AnyOrd |
类似于 std::cmp::Ord 。 |
AnyPartialEq |
类似于 std::cmp::PartialEq 。 |
AnyPartialOrd |
类似于 std::cmp::PartialOrd 。 |
ObjHash |
结合 AnyEq 和 AnyHash 的特性。 |
示例
这里有一个简单但无用的示例。
let x = &42 as &dyn AnyEq;
let y = &42 as &dyn AnyEq;
let z = &"42" as &dyn AnyEq;
assert!(x == y);
assert!(x != z);
这里有一个使用动态类型作为 HashMap 键的示例。
let mut map = HashMap::<Box<dyn ObjHash>, String>::new();
map.insert(Box::new(false), "bool".to_string());
map.insert(Box::new(0), "int".to_string());
map.insert(Box::new(""), "string".to_string());
assert_eq!(map[&false as &dyn ObjHash], "bool");
assert_eq!(map[&0 as &dyn ObjHash], "int");
assert_eq!(map[&"" as &dyn ObjHash], "string");
新功能
v0.4.1
- 小重构。
v0.4.0
- 修复遗忘的实现。
- 添加 box 升级方法(例如
as_any_eq_box
)。
v0.3.0
- 在几个位置添加了
must_use
注释。
v0.2.0
- 模块
upcast
规范略有变化。