use protobuf::ProtobufError; use std::io::Read; pub(crate) fn parse_message_from_bytes(bytes: &[u8]) -> Result where M: ::protobuf::Message, { let mut stream = ::protobuf::CodedInputStream::from_bytes(bytes); let mut message: M = ::protobuf::Message::new(); message.merge_from(&mut stream)?; if message.is_initialized() { Ok(message) } else { Err(::protobuf::ProtobufError::message_not_initialized("")) } } pub(crate) fn parse_message_from_reader(reader: &mut R) -> Result where R: Read, M: ::protobuf::Message, { let mut stream = ::protobuf::CodedInputStream::new(reader); let mut message: M = ::protobuf::Message::new(); message.merge_from(&mut stream)?; stream.check_eof()?; if message.is_initialized() { Ok(message) } else { Err(::protobuf::ProtobufError::message_not_initialized("")) } }