diff options
| author | Edward Barnard | 2015-09-23 22:38:33 +0100 |
|---|---|---|
| committer | Edward Barnard | 2015-09-23 22:38:33 +0100 |
| commit | 3964f2a14cba647f6e69d70b3c3cf57a2527e5a5 (patch) | |
| tree | b24db9a99fe8522649e96a24064783d900998195 /src/binary/reader.rs | |
| parent | 020c5b92a190c4942173f553912b96bd07589271 (diff) | |
| download | rust-plist-3964f2a14cba647f6e69d70b3c3cf57a2527e5a5.tar.bz2 | |
Remove dependency on itertools
Diffstat (limited to 'src/binary/reader.rs')
| -rw-r--r-- | src/binary/reader.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/binary/reader.rs b/src/binary/reader.rs index a8d146e..75c7535 100644 --- a/src/binary/reader.rs +++ b/src/binary/reader.rs @@ -1,7 +1,6 @@ use byteorder::{BigEndian, ReadBytesExt}; use byteorder::Error as ByteorderError; use chrono::{TimeZone, UTC}; -use itertools::Interleave; use std::io::{Cursor, Read, Seek, SeekFrom}; use std::string::FromUtf16Error; @@ -235,16 +234,22 @@ impl<R: Read+Seek> StreamingParser<R> { let key_refs = try!(self.read_refs(len)); let value_refs = try!(self.read_refs(len)); - let mut object_refs: Vec<_> = Interleave::new(key_refs.into_iter(), value_refs.into_iter()).collect(); - // Reverse so we can pop off the end of the stack in order - object_refs.reverse(); + let len = len as usize; + + let mut object_refs = Vec::with_capacity(len * 2); + + for i in 1..len+1 { + // Reverse so we can pop off the end of the stack in order + object_refs.push(value_refs[len - i]); + object_refs.push(key_refs[len - i]); + } self.stack.push(StackItem { ty: StackType::Dict, object_refs: object_refs }); - Some(PlistEvent::StartDictionary(Some(len))) + Some(PlistEvent::StartDictionary(Some(len as u64))) }, (_, _) => return Err(ParserError::InvalidData) }; |
