1 个不稳定版本
0.1.3 | 2021年2月21日 |
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
#2367 在 数据结构
11KB
254 行
keyed
通过指定键实现比较特性,这可能会使实现基于键的比较变得稍微容易一些。
lib.rs
:
keyed
使实现基于键的比较变得稍微容易。用法
示例
use keyed::{Key, Keyed};
#[derive(Debug)]
struct Item<T> {
key: i32,
value: T,
}
impl<T> Key for Item<T> {
type Output = i32;
fn key(&self) -> Self::Output {
self.key
}
}
let lhs = Keyed(Item { key: 4, value: 3 });
let rhs = Keyed(Item { key: 4, value: 7 });
assert_eq!(lhs, rhs);
如果您的键是内部数据的引用,您可以使用 RefKey
特性和 RefKeyed
包装器
use keyed::{RefKey, RefKeyed};
#[derive(Debug)]
struct Item<T> {
key: i32,
value: T,
}
impl<T> RefKey for Item<T> {
type Output = i32;
fn key(&self) -> &Self::Output {
&self.key
}
}
let lhs = RefKeyed(Item { key: 4, value: 3 });
let rhs = RefKeyed(Item { key: 4, value: 7 });
assert_eq!(lhs, rhs);