protobuf/rt/
message.rs
1use crate::wire_format::WireType;
2use crate::CodedInputStream;
3use crate::CodedOutputStream;
4use crate::Message;
5use crate::MessageField;
6
7pub fn read_singular_message_into_field<M>(
9 is: &mut CodedInputStream,
10 target: &mut MessageField<M>,
11) -> crate::Result<()>
12where
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
21pub fn write_message_field_with_cached_size<M>(
23 field_number: u32,
24 message: &M,
25 os: &mut CodedOutputStream,
26) -> crate::Result<()>
27where
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}