diff options
| author | Edward Barnard | 2018-10-06 20:01:40 +0100 |
|---|---|---|
| committer | Edward Barnard | 2018-10-06 20:01:40 +0100 |
| commit | a1ab2a2550ed444828a8c76aaa8861268faeca33 (patch) | |
| tree | eace93160ed18a0c6d0cebf191aed8346de99a94 | |
| parent | 283c38b493c30521a96fda253bcc11d7dd744328 (diff) | |
| download | rust-plist-a1ab2a2550ed444828a8c76aaa8861268faeca33.tar.bz2 | |
Use Error in fewer places.
| -rw-r--r-- | src/date.rs | 12 | ||||
| -rw-r--r-- | src/de.rs | 6 | ||||
| -rw-r--r-- | src/events/binary_reader.rs | 8 | ||||
| -rw-r--r-- | src/events/xml_reader.rs | 10 | ||||
| -rw-r--r-- | src/lib.rs | 13 | ||||
| -rw-r--r-- | src/ser.rs | 2 | ||||
| -rw-r--r-- | src/value.rs | 5 |
7 files changed, 23 insertions, 33 deletions
diff --git a/src/date.rs b/src/date.rs index ba7978f..5394ada 100644 --- a/src/date.rs +++ b/src/date.rs @@ -3,8 +3,6 @@ use std::fmt; use std::result::Result as StdResult; use std::time::{Duration, SystemTime, UNIX_EPOCH}; -use Error; - /// A UTC timestamp. Used for serialization to and from the plist date type. #[derive(Clone, Copy, Hash, PartialEq)] pub struct Date { @@ -12,9 +10,9 @@ pub struct Date { } impl Date { - pub(crate) fn from_rfc3339(date: &str) -> Result<Self, Error> { + pub(crate) fn from_rfc3339(date: &str) -> Result<Self, ()> { Ok(Date { - inner: humantime::parse_rfc3339(date).map_err(|_| Error::InvalidData)?, + inner: humantime::parse_rfc3339(date).map_err(|_| ())?, }) } @@ -22,14 +20,14 @@ impl Date { format!("{}", humantime::format_rfc3339(self.inner)) } - pub(crate) fn from_seconds_since_plist_epoch(timestamp: f64) -> Result<Date, Error> { + pub(crate) fn from_seconds_since_plist_epoch(timestamp: f64) -> Result<Date, ()> { // `timestamp` is the number of seconds since the plist epoch of 1/1/2001 00:00:00. // `PLIST_EPOCH_UNIX_TIMESTAMP` is the unix timestamp of the plist epoch. const PLIST_EPOCH_UNIX_TIMESTAMP: u64 = 978_307_200; let plist_epoch = UNIX_EPOCH + Duration::from_secs(PLIST_EPOCH_UNIX_TIMESTAMP); if !timestamp.is_finite() { - return Err(Error::InvalidData); + return Err(()); } let is_negative = timestamp < 0.0; @@ -118,7 +116,7 @@ pub mod serde_impls { where E: Error, { - Date::from_rfc3339(v).map_err(|_| E::invalid_value(Unexpected::Str(v), &self)) + Date::from_rfc3339(v).map_err(|()| E::invalid_value(Unexpected::Str(v), &self)) } } @@ -4,7 +4,7 @@ use std::io::{Read, Seek}; use std::iter::Peekable; use events::{self, Event}; -use {u64_option_to_usize, Error}; +use {u64_to_usize, Error}; macro_rules! expect { ($next:expr, $pat:pat) => { @@ -73,7 +73,7 @@ where { match try_next!(self.events.next()) { Event::StartArray(len) => { - let len = u64_option_to_usize(len)?; + let len = len.and_then(u64_to_usize); let ret = visitor.visit_seq(MapAndSeqAccess::new(self, false, len))?; expect!(self.events.next(), Event::EndArray); Ok(ret) @@ -81,7 +81,7 @@ where Event::EndArray => Err(event_mismatch_error()), Event::StartDictionary(len) => { - let len = u64_option_to_usize(len)?; + let len = len.and_then(u64_to_usize); let ret = visitor.visit_map(MapAndSeqAccess::new(self, false, len))?; expect!(self.events.next(), Event::EndDictionary); Ok(ret) diff --git a/src/events/binary_reader.rs b/src/events/binary_reader.rs index 81af922..6068545 100644 --- a/src/events/binary_reader.rs +++ b/src/events/binary_reader.rs @@ -165,7 +165,7 @@ impl<R: Read + Seek> BinaryReader<R> { } fn seek_to_object(&mut self, object_ref: u64) -> Result<u64, Error> { - let object_ref = u64_to_usize(object_ref)?; + let object_ref = u64_to_usize(object_ref).ok_or(Error::InvalidData)?; let offset = *self .object_offsets .get(object_ref) @@ -232,9 +232,9 @@ impl<R: Read + Seek> BinaryReader<R> { (0x3, 3) => { // Date. Seconds since 1/1/2001 00:00:00. let secs = self.reader.read_f64::<BigEndian>()?; - Some(Event::DateValue(Date::from_seconds_since_plist_epoch( - secs, - )?)) + Some(Event::DateValue( + Date::from_seconds_since_plist_epoch(secs).map_err(|()| Error::InvalidData)?, + )) } (0x4, n) => { // Data diff --git a/src/events/xml_reader.rs b/src/events/xml_reader.rs index 6bb9936..fb09864 100644 --- a/src/events/xml_reader.rs +++ b/src/events/xml_reader.rs @@ -74,11 +74,11 @@ impl<R: Read> XmlReader<R> { })) } "date" => { - return Some( - self.read_content(|s| { - Ok(Event::DateValue(Date::from_rfc3339(&s)?)) - }), - ) + return Some(self.read_content(|s| { + Ok(Event::DateValue( + Date::from_rfc3339(&s).map_err(|()| Error::InvalidData)?, + )) + })) } "integer" => { return Some(self.read_content(|s| match FromStr::from_str(&s) { @@ -129,17 +129,10 @@ impl From<io::Error> for Error { } } -fn u64_to_usize(len_u64: u64) -> Result<usize, Error> { +fn u64_to_usize(len_u64: u64) -> Option<usize> { let len = len_u64 as usize; if len as u64 != len_u64 { - return Err(Error::InvalidData); // Too long - } - Ok(len) -} - -fn u64_option_to_usize(len: Option<u64>) -> Result<Option<usize>, Error> { - match len { - Some(len) => Ok(Some(u64_to_usize(len)?)), - None => Ok(None), + return None; // Too long } + Some(len) } @@ -475,7 +475,7 @@ impl<'a, W: Writer> ser::Serializer for DateSerializer<'a, W> { } fn serialize_str(self, v: &str) -> Result<(), Self::Error> { - let date = Date::from_rfc3339(v).map_err(|_| self.expecting_date_error())?; + let date = Date::from_rfc3339(v).map_err(|()| self.expecting_date_error())?; self.ser.emit(Event::DateValue(date)) } diff --git a/src/value.rs b/src/value.rs index 237ecdf..59cc3d3 100644 --- a/src/value.rs +++ b/src/value.rs @@ -2,7 +2,7 @@ use std::collections::BTreeMap; use std::io::{Read, Seek}; use events::{Event, Reader}; -use {u64_option_to_usize, Date, Error}; +use {u64_to_usize, Date, Error}; /// Represents any plist value. #[derive(Clone, Debug, PartialEq)] @@ -403,8 +403,7 @@ impl<T: Iterator<Item = Result<Event, Error>>> Builder<T> { } fn build_array(&mut self, len: Option<u64>) -> Result<Vec<Value>, Error> { - let len = u64_option_to_usize(len)?; - let mut values = match len { + let mut values = match len.and_then(u64_to_usize) { Some(len) => Vec::with_capacity(len), None => Vec::new(), }; |
