osm_io/osm/pbf/
file_block_iterator.rs1use crate::osm::pbf::blob_iterator::BlobIterator;
2use crate::osm::pbf::file_block::FileBlock;
3
4pub struct FileBlockIterator {
6 blob_iterator: BlobIterator,
7}
8
9impl FileBlockIterator {
10 pub(crate) fn new(blob_iterator: BlobIterator) -> FileBlockIterator {
11 FileBlockIterator {
12 blob_iterator,
13 }
14 }
15}
16
17impl Iterator for FileBlockIterator {
18 type Item = FileBlock;
19
20 fn next(&mut self) -> Option<Self::Item> {
21 let blob_desc = self.blob_iterator.next()?;
22 Some(
23 FileBlock::from_blob_desc(&blob_desc)
24 .unwrap_or_else(|_| panic!("Failed to create a file block from blob {} from {:?}",
25 blob_desc.index(),
26 blob_desc.path()))
27 )
28 }
29}