Implement Extend for Repeated

PiperOrigin-RevId: 620277895
pull/16339/head
Protobuf Team Bot 11 months ago committed by Copybara-Service
parent 11ef0ffb87
commit 7f6a0ba347
  1. 28
      rust/repeated.rs

@ -446,6 +446,18 @@ where
}
}
impl<'msg, 'view, T, ViewT> Extend<ViewT> for RepeatedMut<'msg, T>
where
T: ProxiedInRepeated + ?Sized + 'view,
ViewT: Into<View<'view, T>>,
{
fn extend<I: IntoIterator<Item = ViewT>>(&mut self, iter: I) {
for item in iter {
self.push(item.into());
}
}
}
#[cfg(test)]
mod tests {
use super::*;
@ -492,4 +504,20 @@ mod tests {
bool => [false, true, true, false],
);
}
#[test]
fn test_repeated_extend() {
let mut r = Repeated::<i32>::new();
r.as_mut().extend([0, 1]);
assert_that!(r.as_mut().iter().collect::<Vec<_>>(), elements_are![eq(0), eq(1)]);
let mut x = Repeated::<i32>::new();
x.as_mut().extend([2, 3]);
r.as_mut().extend(&x.as_mut());
assert_that!(
r.as_mut().iter().collect::<Vec<_>>(),
elements_are![eq(0), eq(1), eq(2), eq(3)]
);
}
}

Loading…
Cancel
Save