summaryrefslogtreecommitdiff
path: root/engine-ecs/src/util/array_vec.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine-ecs/src/util/array_vec.rs')
-rw-r--r--engine-ecs/src/util/array_vec.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/engine-ecs/src/util/array_vec.rs b/engine-ecs/src/util/array_vec.rs
index 5d0aac9..5863507 100644
--- a/engine-ecs/src/util/array_vec.rs
+++ b/engine-ecs/src/util/array_vec.rs
@@ -57,9 +57,23 @@ impl<Item, const CAPACITY: usize> ArrayVec<Item, CAPACITY>
}
}
+impl<Item, const CAPACITY: usize> FromIterator<Item> for ArrayVec<Item, CAPACITY>
+{
+ fn from_iter<IterT: IntoIterator<Item = Item>>(iter: IterT) -> Self
+ {
+ let mut new = Self::default();
+
+ for item in iter {
+ new.push(item);
+ }
+
+ new
+ }
+}
+
impl<Item, const CAPACITY: usize> Extend<Item> for ArrayVec<Item, CAPACITY>
{
- fn extend<IntoIter: IntoIterator<Item = Item>>(&mut self, iter: IntoIter)
+ fn extend<Iter: IntoIterator<Item = Item>>(&mut self, iter: Iter)
{
for item in iter {
self.push(item);
@@ -116,6 +130,16 @@ impl<Item, const CAPACITY: usize> Default for ArrayVec<Item, CAPACITY>
}
}
+impl<Item, const CAPACITY: usize> Clone for ArrayVec<Item, CAPACITY>
+where
+ Item: Clone,
+{
+ fn clone(&self) -> Self
+ {
+ Self::from_iter(self.iter().cloned())
+ }
+}
+
impl<Item, const CAPACITY: usize> Drop for ArrayVec<Item, CAPACITY>
{
fn drop(&mut self)