1 unstable release
0.1.3 | Feb 21, 2021 |
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
#2535 in Data structures
46 downloads per month
11KB
254 lines
keyed
Implement comparison traits by specifying a key, this may make implementing key-based comparison a little bit easier.
lib.rs
:
keyed
Make implementing key-based comparison a little bit easier. Usage:
Example:
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);
If your key is a reference to internal data, you can use RefKey
trait and RefKeyed
wrapper:
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);