From 3964f2a14cba647f6e69d70b3c3cf57a2527e5a5 Mon Sep 17 00:00:00 2001 From: Edward Barnard Date: Wed, 23 Sep 2015 22:38:33 +0100 Subject: Remove dependency on itertools --- src/binary/reader.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/binary/reader.rs') 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 StreamingParser { 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) }; -- cgit v1.2.3