aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEdward Barnard2015-12-22 13:10:31 +0000
committerEdward Barnard2015-12-22 13:10:31 +0000
commita0af4383aacca5172a198134c6015bc76c980736 (patch)
tree36ae773b254273d782449b6260fb9470a35e218e /src
parentf20c773f65347be274766dc364a455fbb00c58df (diff)
downloadrust-plist-a0af4383aacca5172a198134c6015bc76c980736.tar.bz2
Hide EventReader variants
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 0334c15..f8f3e52 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -134,7 +134,9 @@ impl From<ChronoParseError> for ReadError {
}
}
-pub enum EventReader<R: Read + Seek> {
+pub struct EventReader<R: Read + Seek>(EventReaderInner<R>);
+
+enum EventReaderInner<R: Read + Seek> {
Uninitialized(Option<R>),
Xml(xml::EventReader<R>),
Binary(binary::EventReader<R>),
@@ -142,7 +144,7 @@ pub enum EventReader<R: Read + Seek> {
impl<R: Read + Seek> EventReader<R> {
pub fn new(reader: R) -> EventReader<R> {
- EventReader::Uninitialized(Some(reader))
+ EventReader(EventReaderInner::Uninitialized(Some(reader)))
}
fn is_binary(reader: &mut R) -> Result<bool, IoError> {
@@ -163,22 +165,22 @@ impl<R: Read + Seek> Iterator for EventReader<R> {
type Item = ReadResult<PlistEvent>;
fn next(&mut self) -> Option<ReadResult<PlistEvent>> {
- let mut reader = match *self {
- EventReader::Xml(ref mut parser) => return parser.next(),
- EventReader::Binary(ref mut parser) => return parser.next(),
- EventReader::Uninitialized(ref mut reader) => reader.take().unwrap(),
+ let mut reader = match self.0 {
+ EventReaderInner::Xml(ref mut parser) => return parser.next(),
+ EventReaderInner::Binary(ref mut parser) => return parser.next(),
+ EventReaderInner::Uninitialized(ref mut reader) => reader.take().unwrap(),
};
let event_reader = match EventReader::is_binary(&mut reader) {
- Ok(true) => EventReader::Binary(binary::EventReader::new(reader)),
- Ok(false) => EventReader::Xml(xml::EventReader::new(reader)),
+ Ok(true) => EventReaderInner::Binary(binary::EventReader::new(reader)),
+ Ok(false) => EventReaderInner::Xml(xml::EventReader::new(reader)),
Err(err) => {
- ::std::mem::replace(self, EventReader::Uninitialized(Some(reader)));
+ ::std::mem::replace(&mut self.0, EventReaderInner::Uninitialized(Some(reader)));
return Some(Err(ReadError::Io(err)));
}
};
- ::std::mem::replace(self, event_reader);
+ ::std::mem::replace(&mut self.0, event_reader);
self.next()
}