From a9320db6f91b9f6b10d2b36c1a9f642bca3cd00d Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 21 Sep 2022 21:33:24 -0700 Subject: [PATCH] Consistently avoid '?' throughout serde crate This makes it easy to redefine a 'try' macro to compare compile-time between `$expr?` and `match $expr { Ok=>v, Err=>return }`. --- serde/src/de/ignored_any.rs | 2 +- serde/src/de/impls.rs | 8 ++++---- serde/src/de/mod.rs | 2 +- serde/src/de/value.rs | 2 +- serde/src/ser/impls.rs | 7 ++++--- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/serde/src/de/ignored_any.rs b/serde/src/de/ignored_any.rs index 1d50f5ec..9ed438e7 100644 --- a/serde/src/de/ignored_any.rs +++ b/serde/src/de/ignored_any.rs @@ -228,7 +228,7 @@ impl<'de> Visitor<'de> for IgnoredAny { where A: EnumAccess<'de>, { - data.variant::()?.1.newtype_variant() + try!(data.variant::()).1.newtype_variant() } } diff --git a/serde/src/de/impls.rs b/serde/src/de/impls.rs index c2a56b4f..c048f714 100644 --- a/serde/src/de/impls.rs +++ b/serde/src/de/impls.rs @@ -2268,14 +2268,14 @@ where where D: Deserializer<'de>, { - let (start, end) = deserializer.deserialize_struct( + let (start, end) = try!(deserializer.deserialize_struct( "Range", range::FIELDS, range::RangeVisitor { expecting: "struct Range", phantom: PhantomData, }, - )?; + )); Ok(start..end) } } @@ -2289,14 +2289,14 @@ where where D: Deserializer<'de>, { - let (start, end) = deserializer.deserialize_struct( + let (start, end) = try!(deserializer.deserialize_struct( "RangeInclusive", range::FIELDS, range::RangeVisitor { expecting: "struct RangeInclusive", phantom: PhantomData, }, - )?; + )); Ok(RangeInclusive::new(start, end)) } } diff --git a/serde/src/de/mod.rs b/serde/src/de/mod.rs index e8a47cfc..86a79ab8 100644 --- a/serde/src/de/mod.rs +++ b/serde/src/de/mod.rs @@ -565,7 +565,7 @@ pub trait Deserialize<'de>: Sized { D: Deserializer<'de>, { // Default implementation just delegates to `deserialize` impl. - *place = Deserialize::deserialize(deserializer)?; + *place = try!(Deserialize::deserialize(deserializer)); Ok(()) } } diff --git a/serde/src/de/value.rs b/serde/src/de/value.rs index e7afdd8d..b60f8e04 100644 --- a/serde/src/de/value.rs +++ b/serde/src/de/value.rs @@ -1501,7 +1501,7 @@ where where T: de::DeserializeSeed<'de>, { - match self.map.next_key_seed(seed)? { + match try!(self.map.next_key_seed(seed)) { Some(key) => Ok((key, private::map_as_enum(self.map))), None => Err(de::Error::invalid_type(de::Unexpected::Map, &"enum")), } diff --git a/serde/src/ser/impls.rs b/serde/src/ser/impls.rs index b56b8be5..e13c739f 100644 --- a/serde/src/ser/impls.rs +++ b/serde/src/ser/impls.rs @@ -614,9 +614,10 @@ impl Serialize for SystemTime { S: Serializer, { use super::SerializeStruct; - let duration_since_epoch = self - .duration_since(UNIX_EPOCH) - .map_err(|_| S::Error::custom("SystemTime must be later than UNIX_EPOCH"))?; + let duration_since_epoch = match self.duration_since(UNIX_EPOCH) { + Ok(duration_since_epoch) => duration_since_epoch, + Err(_) => return Err(S::Error::custom("SystemTime must be later than UNIX_EPOCH")), + }; let mut state = try!(serializer.serialize_struct("SystemTime", 2)); try!(state.serialize_field("secs_since_epoch", &duration_since_epoch.as_secs())); try!(state.serialize_field("nanos_since_epoch", &duration_since_epoch.subsec_nanos()));