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规范略有变化。