diff --git a/data_types/src/sequence_number_set.rs b/data_types/src/sequence_number_set.rs index 306b388fd4..3576ad86ab 100644 --- a/data_types/src/sequence_number_set.rs +++ b/data_types/src/sequence_number_set.rs @@ -73,6 +73,12 @@ impl TryFrom<&[u8]> for SequenceNumberSet { } } +impl Extend for SequenceNumberSet { + fn extend>(&mut self, iter: T) { + self.0.extend(iter.into_iter().map(|v| v.get() as _)) + } +} + #[cfg(test)] mod tests { use super::*; @@ -114,4 +120,22 @@ mod tests { a.remove(SequenceNumber::new(1)); assert_eq!(a.len(), 0); } + + #[test] + fn test_extend() { + let mut a = SequenceNumberSet::default(); + a.add(SequenceNumber::new(42)); + + let extend_set = [SequenceNumber::new(4), SequenceNumber::new(2)]; + + assert!(a.contains(SequenceNumber::new(42))); + assert!(!a.contains(SequenceNumber::new(4))); + assert!(!a.contains(SequenceNumber::new(2))); + + a.extend(extend_set); + + assert!(a.contains(SequenceNumber::new(42))); + assert!(a.contains(SequenceNumber::new(4))); + assert!(a.contains(SequenceNumber::new(2))); + } }