use crate::reflect::runtime_types::RuntimeTypeTrait; use crate::reflect::ProtobufValue; use crate::reflect::ReflectValueRef; pub(crate) struct ReflectRepeatedIter<'a> { imp: Box> + 'a>, } impl<'a> ReflectRepeatedIter<'a> { pub(crate) fn new( iter: impl Iterator> + 'a, ) -> ReflectRepeatedIter<'a> { ReflectRepeatedIter { imp: Box::new(iter), } } pub(crate) fn new_slice(slice: &'a [V]) -> ReflectRepeatedIter<'a> { ReflectRepeatedIter::new(slice.into_iter().map(V::RuntimeType::as_ref)) } } impl<'a> Iterator for ReflectRepeatedIter<'a> { type Item = ReflectValueRef<'a>; fn next(&mut self) -> Option> { self.imp.next() } }