Implement FromIterator for PrimaryMap.
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user