Trait re_viewer::external::nohash_hasher::IsEnabled

pub trait IsEnabled { }
Expand description

Types which are safe to use with NoHashHasher.

This marker trait is an option for types to enable themselves for use with NoHashHasher. In order to be safe, the Hash impl needs to satisfy the following constraint:

One of the Hasher::write_{u8,u16,u32,u64,usize,i8,i16,i32,i64,isize} methods is invoked exactly once.

The best way to ensure this is to write a custom Hash impl even when deriving Hash for a simple newtype of a single type which itself implements IsEnabled may work as well.

§Example

#[derive(PartialEq, Eq)]
struct SomeType(u32);

impl std::hash::Hash for SomeType {
    fn hash<H: std::hash::Hasher>(&self, hasher: &mut H) {
        hasher.write_u32(self.0)
    }
}

impl nohash_hasher::IsEnabled for SomeType {}

let mut m = nohash_hasher::IntMap::default();

m.insert(SomeType(1), 't');
m.insert(SomeType(0), 'f');

assert_eq!(Some(&'t'), m.get(&SomeType(1)));
assert_eq!(Some(&'f'), m.get(&SomeType(0)));

Implementations on Foreign Types§

§

impl IsEnabled for i8

§

impl IsEnabled for i16

§

impl IsEnabled for i32

§

impl IsEnabled for i64

§

impl IsEnabled for isize

§

impl IsEnabled for u8

§

impl IsEnabled for u16

§

impl IsEnabled for u32

§

impl IsEnabled for u64

§

impl IsEnabled for usize

source§

impl IsEnabled for InternedString

source§

impl IsEnabled for ViewSystemIdentifier

§

impl IsEnabled for TypeId

§

impl IsEnabled for ViewportId

Implementors§