Crate keyed[−][src]
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);
Structs
Keyed | A wrapper for data structures that implements |
RefKeyed | A wrapper for data structures that implements |
Traits
Key | Trait for extracting key from a data structure. |
RefKey | Trait for extracting key that is a reference to internal data from a data structure. |