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