Trait slotmap::Key [−][src]
pub trait Key: From<KeyData> + Into<KeyData> + Clone { fn null() -> Self { ... } fn is_null(self) -> bool { ... } }
Key used to access stored values in a slot map.
Do not use a key from one slot map in another. The behavior is safe but non-sensical (and might panic in case of out-of-bounds).
To prevent this, it is suggested to have a unique key type for each slot
map. The easiest way to do this is through new_key_type!
, which
makes a new type identical to DefaultKey
, just with a different name.
Provided methods
fn null() -> Self
[src]
Creates a new key that is always invalid and distinct from any non-null
key. A null key can only be created through this method (or default
initialization of keys made with new_key_type!
, which calls this
method).
A null key is always invalid, but an invalid key (that is, a key that has been removed from the slot map) does not become a null key. A null is safe to use with any safe method of any slot map instance.
Examples
let mut sm = SlotMap::new(); let k = sm.insert(42); let nk = DefaultKey::null(); assert!(nk.is_null()); assert!(k != nk); assert_eq!(sm.get(nk), None);
fn is_null(self) -> bool
[src]
Checks if a key is null. There is only a single null key, that is
a.is_null() && b.is_null()
implies a == b
.
Examples
new_key_type! { struct MyKey; } let a = MyKey::null(); let b = MyKey::default(); assert_eq!(a, b); assert!(a.is_null());