pub trait BiHashItem {
    type K1<'a>: Eq + Hash
       where Self: 'a;
    type K2<'a>: Eq + Hash
       where Self: 'a;
    // Required methods
    fn key1(&self) -> Self::K1<'_>;
    fn key2(&self) -> Self::K2<'_>;
    fn upcast_key1<'short, 'long: 'short>(
        long: Self::K1<'long>,
    ) -> Self::K1<'short>;
    fn upcast_key2<'short, 'long: 'short>(
        long: Self::K2<'long>,
    ) -> Self::K2<'short>;
}Expand description
An item in a BiHashMap.
This trait is used to define the keys.
§Examples
use iddqd::{BiHashItem, BiHashMap, bi_upcast};
// Define a struct with two keys.
#[derive(Debug, PartialEq, Eq, Hash)]
struct MyPair {
    id: u32,
    name: String,
}
// Implement BiHashItem for the struct.
impl BiHashItem for MyPair {
    type K1<'a> = u32;
    type K2<'a> = &'a str;
    fn key1(&self) -> Self::K1<'_> {
        self.id
    }
    fn key2(&self) -> Self::K2<'_> {
        &self.name
    }
    bi_upcast!();
}
// Create a BiHashMap and insert items.
let mut map = BiHashMap::new();
map.insert_unique(MyPair { id: 1, name: "Alice".to_string() }).unwrap();
map.insert_unique(MyPair { id: 2, name: "Bob".to_string() }).unwrap();Required Associated Types§
Required Methods§
Sourcefn upcast_key1<'short, 'long: 'short>(long: Self::K1<'long>) -> Self::K1<'short>
 
fn upcast_key1<'short, 'long: 'short>(long: Self::K1<'long>) -> Self::K1<'short>
Upcasts the first key to a shorter lifetime, in effect asserting that
the lifetime 'a on BiHashItem::K1 is covariant.
Typically implemented via the bi_upcast macro.
Sourcefn upcast_key2<'short, 'long: 'short>(long: Self::K2<'long>) -> Self::K2<'short>
 
fn upcast_key2<'short, 'long: 'short>(long: Self::K2<'long>) -> Self::K2<'short>
Upcasts the second key to a shorter lifetime, in effect asserting that
the lifetime 'a on BiHashItem::K2 is covariant.
Typically implemented via the bi_upcast macro.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.