protobuf/rt/
message.rs

1use crate::wire_format::WireType;
2use crate::CodedInputStream;
3use crate::CodedOutputStream;
4use crate::Message;
5use crate::MessageField;
6
7/// Read singular `message` field.
8pub 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
21/// Write message with field number and length to the stream.
22pub 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}