diff options
Diffstat (limited to 'engine-ecs/src/util/array_vec.rs')
| -rw-r--r-- | engine-ecs/src/util/array_vec.rs | 26 |
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) |
