|
|
@@ -35,7 +35,7 @@ pub enum BlobType<'a> {
|
|
35
|
35
|
/// The decoded content of a blob (analogous to `BlobType`).
|
|
36
|
36
|
pub enum BlobDecode<'a> {
|
|
37
|
37
|
/// Blob contains a `HeaderBlock`.
|
|
38
|
|
- OsmHeader(HeaderBlock),
|
|
|
38
|
+ OsmHeader(Box<HeaderBlock>),
|
|
39
|
39
|
/// Blob contains a `PrimitiveBlock`.
|
|
40
|
40
|
OsmData(PrimitiveBlock),
|
|
41
|
41
|
/// An unknown blob type with the given string identifier.
|
|
|
@@ -65,12 +65,13 @@ impl Blob {
|
|
65
|
65
|
pub fn decode(&self) -> Result<BlobDecode> {
|
|
66
|
66
|
match self.get_type() {
|
|
67
|
67
|
BlobType::OsmHeader => {
|
|
68
|
|
- self.to_headerblock()
|
|
69
|
|
- .map(BlobDecode::OsmHeader)
|
|
|
68
|
+ let block = Box::new(self.to_headerblock()?);
|
|
|
69
|
+ Ok(BlobDecode::OsmHeader(block))
|
|
|
70
|
+
|
|
70
|
71
|
},
|
|
71
|
72
|
BlobType::OsmData => {
|
|
72
|
|
- self.to_primitiveblock()
|
|
73
|
|
- .map(BlobDecode::OsmData)
|
|
|
73
|
+ let block = self.to_primitiveblock()?;
|
|
|
74
|
+ Ok(BlobDecode::OsmData(block))
|
|
74
|
75
|
},
|
|
75
|
76
|
BlobType::Unknown(x) => Ok(BlobDecode::Unknown(x)),
|
|
76
|
77
|
}
|