1 use crate::error::WireError;
2 use crate::wire_format::WireType;
3 use crate::CodedInputStream;
4
read_map_template_new( is: &mut CodedInputStream, mut key: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>, mut value: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>, ) -> crate::Result<()>5 pub(crate) fn read_map_template_new(
6 is: &mut CodedInputStream,
7 mut key: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>,
8 mut value: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>,
9 ) -> crate::Result<()> {
10 let len = is.read_raw_varint32()?;
11 let old_limit = is.push_limit(len as u64)?;
12 while !is.eof()? {
13 let (field_number, wire_type) = is.read_tag_unpack()?;
14 match field_number {
15 1 => key(wire_type, is)?,
16 2 => value(wire_type, is)?,
17 _ => is.skip_field(wire_type)?,
18 }
19 }
20 is.pop_limit(old_limit);
21 Ok(())
22 }
23
read_map_template( wire_type: WireType, is: &mut CodedInputStream, key: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>, value: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>, ) -> crate::Result<()>24 pub(crate) fn read_map_template(
25 wire_type: WireType,
26 is: &mut CodedInputStream,
27 key: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>,
28 value: impl FnMut(WireType, &mut CodedInputStream) -> crate::Result<()>,
29 ) -> crate::Result<()> {
30 if wire_type != WireType::LengthDelimited {
31 return Err(WireError::UnexpectedWireType(wire_type).into());
32 }
33
34 read_map_template_new(is, key, value)
35 }
36