feat: impl Extend for SequenceNumberSet
Allow a SequenceNumberSet to be efficiently extended from any iterator of SequenceNumber instances.pull/24376/head
parent
c538cac4ef
commit
6532fb752b
|
@ -73,6 +73,12 @@ impl TryFrom<&[u8]> for SequenceNumberSet {
|
|||
}
|
||||
}
|
||||
|
||||
impl Extend<SequenceNumber> for SequenceNumberSet {
|
||||
fn extend<T: IntoIterator<Item = SequenceNumber>>(&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)));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue