From da761e65e2f7b74afd2bdf1e07b19e038d990df6 Mon Sep 17 00:00:00 2001 From: Edward Barnard Date: Tue, 4 Aug 2015 15:54:47 +0100 Subject: Implement Iterator trait --- src/reader.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/reader.rs') diff --git a/src/reader.rs b/src/reader.rs index 03942d0..64e666e 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -49,8 +49,12 @@ impl EventReader { _ => PlistEvent::Error(()) } } +} + +impl Iterator for EventReader { + type Item = PlistEvent; - pub fn next(&mut self) -> Option { + fn next(&mut self) -> Option { loop { let first_event = self.xml_reader.next(); match first_event { @@ -107,15 +111,8 @@ mod tests { use reader::PlistEvent::*; let reader = File::open(&Path::new("./tests/data/simple.plist")).unwrap(); - let mut event_reader = EventReader::new(reader); - let mut events = Vec::new(); - loop { - if let Some(event) = event_reader.next() { - events.push(event); - } else { - break; - } - } + let event_reader = EventReader::new(reader); + let events: Vec = event_reader.collect(); let comparison = &[ StartDictionary, -- cgit v1.2.3