diff --git a/src/fixed_vector.rs b/src/fixed_vector.rs index bfabac6..fe0e6f9 100644 --- a/src/fixed_vector.rs +++ b/src/fixed_vector.rs @@ -168,6 +168,15 @@ impl<'a, T, N: Unsigned> IntoIterator for &'a FixedVector { } } +impl IntoIterator for FixedVector { + type Item = T; + type IntoIter = std::vec::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + self.vec.into_iter() + } +} + impl tree_hash::TreeHash for FixedVector where T: tree_hash::TreeHash, @@ -396,6 +405,17 @@ mod test { assert_eq!(fixed.get(4), None); } + #[test] + fn iterator() { + let vec = vec![0, 2, 4, 6]; + let fixed: FixedVector = FixedVector::from(vec); + + // test the reference version + assert_eq!((&fixed).into_iter().sum::(), 12); + // test the owned version + assert_eq!(fixed.into_iter().sum::(), 12); + } + #[test] fn ssz_encode() { let vec: FixedVector = vec![0; 2].into();