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

util.rs 939B

1234567891011121314151617181920212223242526272829303132333435
  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
  5. M: ::protobuf::Message,
  6. {
  7. let mut stream = ::protobuf::CodedInputStream::from_bytes(bytes);
  8. let mut message: M = ::protobuf::Message::new();
  9. message.merge_from(&mut stream)?;
  10. if message.is_initialized() {
  11. Ok(message)
  12. } else {
  13. Err(::protobuf::ProtobufError::message_not_initialized(""))
  14. }
  15. }
  16. pub(crate) fn parse_message_from_reader<R, M>(reader: &mut R) -> Result<M, ProtobufError>
  17. where
  18. R: Read,
  19. M: ::protobuf::Message,
  20. {
  21. let mut stream = ::protobuf::CodedInputStream::new(reader);
  22. let mut message: M = ::protobuf::Message::new();
  23. message.merge_from(&mut stream)?;
  24. stream.check_eof()?;
  25. if message.is_initialized() {
  26. Ok(message)
  27. } else {
  28. Err(::protobuf::ProtobufError::message_not_initialized(""))
  29. }
  30. }