mirror of
https://github.com/protocolbuffers/protobuf
synced 2026-08-26 02:23:14 -04:00
Remove iterator trait implementations for RepeatedMutIter
Use inherent next()/next_back()/len() API instead. PiperOrigin-RevId: 963506746
This commit is contained in:
parent
e49cfc58ea
commit
e8bd2b5dcc
2 changed files with 2 additions and 76 deletions
|
|
@ -569,8 +569,8 @@ impl<'borrow, T: Singular> iter::IntoIterator for &'borrow RepeatedMut<'_, T> {
|
|||
|
||||
/// An iterator over the mutable values inside of a [`RepeatedMut`].
|
||||
///
|
||||
/// **WARNING**: This is transitioning to a **Lending Iterator**. Standard `for` loops will soon be
|
||||
/// unsupported. Use `while let Some(item) = iter.next()` instead.
|
||||
/// **WARNING**: This has transitioned to a **Lending Iterator**. Standard `for` loops are not
|
||||
/// supported anymore. Use `while let Some(item) = iter.next()` instead.
|
||||
pub struct RepeatedMutIter<'msg, T> {
|
||||
inner: InnerRepeatedMut<'msg>,
|
||||
current_index: usize,
|
||||
|
|
@ -619,59 +619,6 @@ impl<'msg, T: Message> RepeatedMutIter<'msg, T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'msg, T: Message> iter::Iterator for RepeatedMutIter<'msg, T> {
|
||||
type Item = Mut<'msg, T>;
|
||||
|
||||
#[inline]
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
if self.current_index >= self.end_index {
|
||||
return None;
|
||||
}
|
||||
let index = self.current_index;
|
||||
self.current_index += 1;
|
||||
|
||||
// SAFETY: index is valid.
|
||||
let val = unsafe {
|
||||
let temp_repeated = RepeatedMut::from_inner(Private, self.inner);
|
||||
T::repeated_get_mut_unchecked(Private, temp_repeated, index)
|
||||
};
|
||||
|
||||
Some(val)
|
||||
}
|
||||
|
||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||
let len = self.len();
|
||||
(len, Some(len))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'msg, T: Message> ExactSizeIterator for RepeatedMutIter<'msg, T> {
|
||||
fn len(&self) -> usize {
|
||||
self.end_index - self.current_index
|
||||
}
|
||||
}
|
||||
|
||||
impl<'msg, T: Message> iter::DoubleEndedIterator for RepeatedMutIter<'msg, T> {
|
||||
#[inline]
|
||||
fn next_back(&mut self) -> Option<Self::Item> {
|
||||
if self.current_index >= self.end_index {
|
||||
return None;
|
||||
}
|
||||
self.end_index -= 1;
|
||||
let index = self.end_index;
|
||||
|
||||
// SAFETY: index is guaranteed to be in bounds.
|
||||
let val = unsafe {
|
||||
let temp_repeated = RepeatedMut::from_inner(Private, self.inner);
|
||||
T::repeated_get_mut_unchecked(Private, temp_repeated, index)
|
||||
};
|
||||
|
||||
Some(val)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'msg, T: Message> FusedIterator for RepeatedMutIter<'msg, T> {}
|
||||
|
||||
impl<'msg, T: Message> RepeatedMut<'msg, T> {
|
||||
/// Returns an iterator that allows modifying each value.
|
||||
pub fn iter_mut(self) -> RepeatedMutIter<'msg, T> {
|
||||
|
|
|
|||
|
|
@ -254,25 +254,6 @@ fn test_repeated_message_iter_mut_empty() {
|
|||
assert_that!(iter.next(), none());
|
||||
}
|
||||
|
||||
#[gtest]
|
||||
fn test_repeated_message_iter_mut() {
|
||||
let mut msg = TestAllTypes::new();
|
||||
for i in 0..3 {
|
||||
let mut nested = NestedMessage::new();
|
||||
nested.set_bb(i);
|
||||
msg.repeated_nested_message_mut().push(nested);
|
||||
}
|
||||
|
||||
for mut nested in msg.repeated_nested_message_mut().iter_mut() {
|
||||
let bb = nested.bb();
|
||||
nested.set_bb(bb + 1);
|
||||
}
|
||||
|
||||
assert_that!(msg.repeated_nested_message().get(0).unwrap().bb(), eq(1));
|
||||
assert_that!(msg.repeated_nested_message().get(1).unwrap().bb(), eq(2));
|
||||
assert_that!(msg.repeated_nested_message().get(2).unwrap().bb(), eq(3));
|
||||
}
|
||||
|
||||
#[gtest]
|
||||
fn test_repeated_message_iter_mut_custom_next() {
|
||||
let mut msg = TestAllTypes::new();
|
||||
|
|
@ -285,7 +266,6 @@ fn test_repeated_message_iter_mut_custom_next() {
|
|||
let mut iter = msg.repeated_nested_message_mut().iter_mut();
|
||||
|
||||
assert_that!(iter.len(), eq(3));
|
||||
assert_that!(iter.size_hint(), eq((3, Some(3))));
|
||||
|
||||
while let Some(mut nested) = iter.next() {
|
||||
let bb = nested.bb();
|
||||
|
|
@ -293,7 +273,6 @@ fn test_repeated_message_iter_mut_custom_next() {
|
|||
}
|
||||
|
||||
assert_that!(iter.len(), eq(0));
|
||||
assert_that!(iter.size_hint(), eq((0, Some(0))));
|
||||
|
||||
assert_that!(msg.repeated_nested_message().get(0).unwrap().bb(), eq(10));
|
||||
assert_that!(msg.repeated_nested_message().get(1).unwrap().bb(), eq(11));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue