A Rust library for reading the OpenStreetMap PBF file format (*.osm.pbf).

util.rs 945B

12345678910111213141516171819202122232425262728293031323334
  1. use protobuf::ProtobufError;
  2. use std::io::Read;
  3. pub(crate) fn parse_message_from_bytes<M>(bytes: &[u8]) -> Result<M, ProtobufError>
  4. where M: ::protobuf::Message
  5. {
  6. let mut stream = ::protobuf::CodedInputStream::from_bytes(bytes);
  7. let mut message: M = ::protobuf::Message::new();
  8. message.merge_from(&mut stream)?;
  9. if message.is_initialized() {
  10. Ok(message)
  11. } else {
  12. Err(::protobuf::ProtobufError::message_not_initialized(""))
  13. }
  14. }
  15. pub(crate) fn parse_message_from_reader<R, M>(reader: &mut R) -> Result<M, ProtobufError>
  16. where R: Read,
  17. M: ::protobuf::Message,
  18. {
  19. let mut stream = ::protobuf::CodedInputStream::new(reader);
  20. let mut message: M = ::protobuf::Message::new();
  21. message.merge_from(&mut stream)?;
  22. stream.check_eof()?;
  23. if message.is_initialized() {
  24. Ok(message)
  25. } else {
  26. Err(::protobuf::ProtobufError::message_not_initialized(""))
  27. }
  28. }