]> git.lizzy.rs Git - rust.git/commitdiff
Delete Decoder::read_option
authorMark Rousskov <mark.simulacrum@gmail.com>
Wed, 9 Feb 2022 22:42:38 +0000 (17:42 -0500)
committerMark Rousskov <mark.simulacrum@gmail.com>
Sun, 20 Feb 2022 23:58:23 +0000 (18:58 -0500)
compiler/rustc_serialize/src/serialize.rs

index 9a45bc56ce17af55a2f10b8a8d7cd0c140300746..16d9270b6093ee3bc2db02116758b65d63788283 100644 (file)
@@ -210,18 +210,6 @@ fn read_enum_variant<T, F>(&mut self, mut f: F) -> T
         f(self, disr)
     }
 
-    // Specialized types:
-    fn read_option<T, F>(&mut self, mut f: F) -> T
-    where
-        F: FnMut(&mut Self, bool) -> T,
-    {
-        self.read_enum_variant(move |this, idx| match idx {
-            0 => f(this, false),
-            1 => f(this, true),
-            _ => panic!("read_option: expected 0 for None or 1 for Some"),
-        })
-    }
-
     fn read_seq<T, F>(&mut self, f: F) -> T
     where
         F: FnOnce(&mut Self, usize) -> T,
@@ -501,7 +489,11 @@ fn encode(&self, s: &mut S) -> Result<(), S::Error> {
 
 impl<D: Decoder, T: Decodable<D>> Decodable<D> for Option<T> {
     fn decode(d: &mut D) -> Option<T> {
-        d.read_option(|d, b| if b { Some(Decodable::decode(d)) } else { None })
+        d.read_enum_variant(move |this, idx| match idx {
+            0 => None,
+            1 => Some(Decodable::decode(this)),
+            _ => panic!("Encountered invalid discriminant while decoding `Option`."),
+        })
     }
 }