Tidy ssz decoding code
This commit is contained in:
		
							parent
							
								
									fc2a406edf
								
							
						
					
					
						commit
						02afc6ef24
					
				| @ -102,31 +102,27 @@ impl<'a> SszDecoderBuilder<'a> { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn apply_offsets(&mut self) -> Result<(), DecodeError> { |     fn apply_offsets(&mut self) -> Result<(), DecodeError> { | ||||||
|         dbg!(&self.offsets); |  | ||||||
|         dbg!(&self.items); |  | ||||||
|         if !self.offsets.is_empty() { |         if !self.offsets.is_empty() { | ||||||
| 
 |             // Check to ensure the first offset points to the byte immediately following the
 | ||||||
|             let mut running_offset = self.offsets[0].offset; |             // fixed-length bytes.
 | ||||||
| 
 |             if self.offsets[0].offset != self.items_index { | ||||||
|             if running_offset != self.items_index { |                 return Err(DecodeError::OutOfBoundsByte { | ||||||
|                 return Err(DecodeError::OutOfBoundsByte { i: running_offset }) |                     i: self.offsets[0].offset, | ||||||
|  |                 }); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             for i in 1..=self.offsets.len() { |             // Iterate through each pair of offsets, grabbing the slice between each of the offsets.
 | ||||||
|                 let slice_option = if i == self.offsets.len() { |             for pair in self.offsets.windows(2) { | ||||||
|                     self.bytes.get(running_offset..) |                 let a = pair[0]; | ||||||
|                 } else { |                 let b = pair[1]; | ||||||
|                     let offset = self.offsets[i]; |  | ||||||
|                     let start = running_offset; |  | ||||||
|                     running_offset = offset.offset; |  | ||||||
| 
 | 
 | ||||||
|                     self.bytes.get(start..running_offset) |                 self.items[a.position] = &self.bytes[a.offset..b.offset]; | ||||||
|                 }; |             } | ||||||
| 
 | 
 | ||||||
|                 let slice = slice_option |             // Handle the last offset, pushing a slice from it's start through to the end of
 | ||||||
|                     .ok_or_else(|| DecodeError::OutOfBoundsByte { i: running_offset })?; |             // `self.bytes`.
 | ||||||
| 
 |             if let Some(last) = self.offsets.last() { | ||||||
|                 self.items[self.offsets[i - 1].position] = slice; |                 self.items[last.position] = &self.bytes[last.offset..] | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user