Implement FromIterator for PrimaryMap.

This commit is contained in:
Dan Gohman
2018-11-30 16:31:00 -08:00
parent e623da51c6
commit c287231720

View File

@@ -1,4 +1,5 @@
//! Densely numbered entity references as mapping keys. //! Densely numbered entity references as mapping keys.
use std::iter::FromIterator;
use std::marker::PhantomData; use std::marker::PhantomData;
use std::ops::{Index, IndexMut}; use std::ops::{Index, IndexMut};
use std::slice; 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)] #[cfg(test)]
mod tests { mod tests {
use super::*; 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);
}
}
} }