1 use crate::wire_format::WireType;
2 use crate::CodedInputStream;
3 use crate::CodedOutputStream;
4 use crate::Message;
5 use crate::MessageField;
6
7 /// Read singular `message` field.
read_singular_message_into_field<M>( is: &mut CodedInputStream, target: &mut MessageField<M>, ) -> crate::Result<()> where M: Message,8 pub fn read_singular_message_into_field<M>(
9 is: &mut CodedInputStream,
10 target: &mut MessageField<M>,
11 ) -> crate::Result<()>
12 where
13 M: Message,
14 {
15 let mut m = M::new();
16 is.merge_message(&mut m)?;
17 *target = MessageField::some(m);
18 Ok(())
19 }
20
21 /// Write message with field number and length to the stream.
write_message_field_with_cached_size<M>( field_number: u32, message: &M, os: &mut CodedOutputStream, ) -> crate::Result<()> where M: Message,22 pub fn write_message_field_with_cached_size<M>(
23 field_number: u32,
24 message: &M,
25 os: &mut CodedOutputStream,
26 ) -> crate::Result<()>
27 where
28 M: Message,
29 {
30 os.write_tag(field_number, WireType::LengthDelimited)?;
31 os.write_raw_varint32(message.cached_size())?;
32 message.write_to_with_cached_sizes(os)
33 }
34