Implement FromIterator for PrimaryMap.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
//! Densely numbered entity references as mapping keys.
|
||||
use std::iter::FromIterator;
|
||||
use std::marker::PhantomData;
|
||||
use std::ops::{Index, IndexMut};
|
||||
use std::slice;
|
||||
@@ -170,6 +171,21 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<K, V> FromIterator<V> for PrimaryMap<K, V>
|
||||
where
|
||||
K: EntityRef,
|
||||
{
|
||||
fn from_iter<T>(iter: T) -> Self
|
||||
where
|
||||
T: IntoIterator<Item = V>,
|
||||
{
|
||||
Self {
|
||||
elems: Vec::from_iter(iter),
|
||||
unused: PhantomData,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -346,4 +362,15 @@ mod tests {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn from_iter() {
|
||||
let mut m: PrimaryMap<E, usize> = PrimaryMap::new();
|
||||
m.push(12);
|
||||
m.push(33);
|
||||
let n = m.values().collect::<PrimaryMap<E, _>>();
|
||||
assert!(m.len() == n.len());
|
||||
for (me, ne) in m.values().zip(n.values()) {
|
||||
assert!(*me == **ne);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user