Struct enum_map::EnumMap [−][src]
pub struct EnumMap<K: Enum<V>, V> { /* fields omitted */ }
An enum mapping.
This internally uses an array which stores a value for each possible
enum value. To work, it requires implementation of internal (private,
although public due to macro limitations) trait which allows extracting
information about an enum, which can be automatically generated using
#[derive(Enum)]
macro.
Additionally, bool
and u8
automatically derives from Enum
. While
u8
is not technically an enum, it’s convenient to consider it like one.
In particular, reverse-complement in benchmark game could be using u8
as an enum.
Examples
use enum_map::{enum_map, Enum, EnumMap}; #[derive(Enum)] enum Example { A, B, C, } let mut map = EnumMap::default(); // new initializes map with default values assert_eq!(map[Example::A], 0); map[Example::A] = 3; assert_eq!(map[Example::A], 3);
Implementations
impl<K: Enum<V>, V> EnumMap<K, V>
[src]
impl<K: Enum<V>, V> EnumMap<K, V>
[src]pub fn values(&self) -> Values<'_, V>ⓘ
[src]
An iterator visiting all values. The iterator type is &V
.
Examples
use enum_map::enum_map; let map = enum_map! { false => 3, true => 4 }; let mut values = map.values(); assert_eq!(values.next(), Some(&3)); assert_eq!(values.next(), Some(&4)); assert_eq!(values.next(), None);
pub fn values_mut(&mut self) -> ValuesMut<'_, V>ⓘ
[src]
An iterator visiting all values mutably. The iterator type is &mut V
.
Examples
use enum_map::enum_map; let mut map = enum_map! { _ => 2 }; for value in map.values_mut() { *value += 2; } assert_eq!(map[false], 4); assert_eq!(map[true], 4);
impl<K: Enum<V>, V: Default> EnumMap<K, V>
[src]
impl<K: Enum<V>, V: Default> EnumMap<K, V>
[src]pub fn clear(&mut self)
[src]
Clear enum map with default values.
Examples
use enum_map::{Enum, EnumMap}; #[derive(Enum)] enum Example { A, B, } let mut enum_map = EnumMap::<_, String>::default(); enum_map[Example::B] = "foo".into(); enum_map.clear(); assert_eq!(enum_map[Example::A], ""); assert_eq!(enum_map[Example::B], "");
impl<K: Enum<V>, V> EnumMap<K, V>
[src]
impl<K: Enum<V>, V> EnumMap<K, V>
[src]pub fn from_array(array: K::Array) -> EnumMap<K, V>
[src]
Creates an enum map from array.
pub fn iter(&self) -> Iter<'_, K, V>ⓘ
[src]
Returns an iterator over enum map.
pub fn iter_mut(&mut self) -> IterMut<'_, K, V>ⓘ
[src]
Returns a mutable iterator over enum map.
pub fn len(&self) -> usize
[src]
Returns number of elements in enum map.
pub fn swap(&mut self, a: K, b: K)
[src]
Swaps two indexes.
Examples
use enum_map::enum_map; let mut map = enum_map! { false => 0, true => 1 }; map.swap(false, true); assert_eq!(map[false], 1); assert_eq!(map[true], 0);
pub fn as_slice(&self) -> &[V]
[src]
Converts an enum map to a slice representing values.
pub fn as_mut_slice(&mut self) -> &mut [V]
[src]
Converts a mutable enum map to a mutable slice representing values.
Trait Implementations
impl<'a, K: Enum<V>, V: Arbitrary<'a>> Arbitrary<'a> for EnumMap<K, V>
[src]
impl<'a, K: Enum<V>, V: Arbitrary<'a>> Arbitrary<'a> for EnumMap<K, V>
[src]Requires crate feature "arbitrary"
impl<K: Enum<V>, V> Clone for EnumMap<K, V> where
K::Array: Clone,
[src]
impl<K: Enum<V>, V> Clone for EnumMap<K, V> where
K::Array: Clone,
[src]fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<'de, K, V> Deserialize<'de> for EnumMap<K, V> where
K: Enum<V> + Enum<Option<V>> + Deserialize<'de>,
V: Deserialize<'de>,
[src]
impl<'de, K, V> Deserialize<'de> for EnumMap<K, V> where
K: Enum<V> + Enum<Option<V>> + Deserialize<'de>,
V: Deserialize<'de>,
[src]Requires crate feature "serde"
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
[src]
impl<'a, K, V> Extend<(&'a K, &'a V)> for EnumMap<K, V> where
K: Enum<V> + Copy,
V: Copy,
[src]
impl<'a, K, V> Extend<(&'a K, &'a V)> for EnumMap<K, V> where
K: Enum<V> + Copy,
V: Copy,
[src]fn extend<I: IntoIterator<Item = (&'a K, &'a V)>>(&mut self, iter: I)
[src]
pub fn extend_one(&mut self, item: A)
[src]
pub fn extend_reserve(&mut self, additional: usize)
[src]
impl<K: Enum<V>, V> Extend<(K, V)> for EnumMap<K, V>
[src]
impl<K: Enum<V>, V> Extend<(K, V)> for EnumMap<K, V>
[src]fn extend<I: IntoIterator<Item = (K, V)>>(&mut self, iter: I)
[src]
pub fn extend_one(&mut self, item: A)
[src]
pub fn extend_reserve(&mut self, additional: usize)
[src]
impl<'a, K: Enum<V>, V> IntoIterator for &'a EnumMap<K, V>
[src]
impl<'a, K: Enum<V>, V> IntoIterator for &'a EnumMap<K, V>
[src]impl<'a, K: Enum<V>, V> IntoIterator for &'a mut EnumMap<K, V>
[src]
impl<'a, K: Enum<V>, V> IntoIterator for &'a mut EnumMap<K, V>
[src]impl<K: Enum<V>, V> IntoIterator for EnumMap<K, V>
[src]
impl<K: Enum<V>, V> IntoIterator for EnumMap<K, V>
[src]Auto Trait Implementations
impl<K, V> RefUnwindSafe for EnumMap<K, V> where
<K as Enum<V>>::Array: RefUnwindSafe,
impl<K, V> RefUnwindSafe for EnumMap<K, V> where
<K as Enum<V>>::Array: RefUnwindSafe,
impl<K, V> UnwindSafe for EnumMap<K, V> where
<K as Enum<V>>::Array: UnwindSafe,
impl<K, V> UnwindSafe for EnumMap<K, V> where
<K as Enum<V>>::Array: UnwindSafe,
Blanket Implementations
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]