AsKeys

Trait AsKeys 

Source
pub trait AsKeys {
    // Required method
    fn as_keys(&self) -> Vec<u64>;
}
Expand description

Trait for anything that can be turned into a key The reason this exists is to allow for prefix invalidation, so lists or tuples should return one hash per element. It’s automatically implemented for String, str and any tuple of size 2 - 12 where each element implements Hash. If your keys aren’t covered by the default implementation for some reason, you can implement this manually.

§Example

struct MyType {
    item1: String,
    item2: String,
}

impl AsKey for MyType {
    fn as_key(&self) -> Vec<u64> {
        let mut hash = FnvHasher::default();
        self.item1.hash(&mut hash);
        let hash1 = hash.finish();
        hash = FnvHasher::default();
        self.item2.hash(&mut hash);
        let hash2 = hash.finish();
        vec![hash1, hash2]
    }
}

}

Required Methods§

Source

fn as_keys(&self) -> Vec<u64>

Internal function to convert the type to a key for use in the query cache and notifier list.

Implementations on Foreign Types§

Source§

impl AsKeys for &str

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl AsKeys for str

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl AsKeys for String

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash> AsKeys for (T1, T2)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash> AsKeys for (T1, T2, T3)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash> AsKeys for (T1, T2, T3, T4)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash> AsKeys for (T1, T2, T3, T4, T5)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash, T6: Hash> AsKeys for (T1, T2, T3, T4, T5, T6)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash, T6: Hash, T7: Hash> AsKeys for (T1, T2, T3, T4, T5, T6, T7)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash, T6: Hash, T7: Hash, T8: Hash> AsKeys for (T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash, T6: Hash, T7: Hash, T8: Hash, T9: Hash> AsKeys for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash, T6: Hash, T7: Hash, T8: Hash, T9: Hash, T10: Hash> AsKeys for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash, T6: Hash, T7: Hash, T8: Hash, T9: Hash, T10: Hash, T11: Hash> AsKeys for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn as_keys(&self) -> Vec<u64>

Source§

impl<T1: Hash, T2: Hash, T3: Hash, T4: Hash, T5: Hash, T6: Hash, T7: Hash, T8: Hash, T9: Hash, T10: Hash, T11: Hash, T12: Hash> AsKeys for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

fn as_keys(&self) -> Vec<u64>

Implementors§