Remove iterator trait implementations for RepeatedMutIter

Use inherent next()/next_back()/len() API instead.

PiperOrigin-RevId: 963506746
This commit is contained in:
Runze Wang 2026-08-12 09:55:45 -07:00 committed by Copybara-Service
parent e49cfc58ea
commit e8bd2b5dcc
2 changed files with 2 additions and 76 deletions

View file

@ -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> {

View file

@ -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));