Просмотр исходного кода

Rewrite some match {} statements as Option::map() and Option::and_then()

Simon Sapin 12 лет назад
Родитель
Сommit
b9b78a8fec
1 измененных файлов с 6 добавлено и 24 удалено
  1. 6 24
      src/url.rs

+ 6 - 24
src/url.rs

@@ -361,50 +361,32 @@ impl Url {
 
     #[inline]
     pub fn host<'a>(&'a self) -> Option<&'a Host> {
-        match self.scheme_data {
-            RelativeSchemeData(ref scheme_data) => Some(&scheme_data.host),
-            NonRelativeSchemeData(..) => None,
-        }
+        self.relative_scheme_data().map(|scheme_data| &scheme_data.host)
     }
 
     #[inline]
     pub fn domain<'a>(&'a self) -> Option<&'a str> {
-        match self.scheme_data {
-            RelativeSchemeData(ref scheme_data) => scheme_data.domain(),
-            NonRelativeSchemeData(..) => None,
-        }
+        self.relative_scheme_data().and_then(|scheme_data| scheme_data.domain())
     }
 
     #[inline]
     pub fn port<'a>(&'a self) -> Option<&'a str> {
-        match self.scheme_data {
-            RelativeSchemeData(ref scheme_data) => Some(scheme_data.port.as_slice()),
-            NonRelativeSchemeData(..) => None,
-        }
+        self.relative_scheme_data().map(|scheme_data| scheme_data.port.as_slice())
     }
 
     #[inline]
     pub fn path<'a>(&'a self) -> Option<&'a [String]> {
-        match self.scheme_data {
-            RelativeSchemeData(ref scheme_data) => Some(scheme_data.path.as_slice()),
-            NonRelativeSchemeData(..) => None,
-        }
+        self.relative_scheme_data().map(|scheme_data| scheme_data.path.as_slice())
     }
 
     #[inline]
     pub fn serialize_host(&self) -> Option<String> {
-        match self.scheme_data {
-            RelativeSchemeData(ref scheme_data) => Some(scheme_data.host.serialize()),
-            NonRelativeSchemeData(..) => None,
-        }
+        self.relative_scheme_data().map(|scheme_data| scheme_data.host.serialize())
     }
 
     #[inline]
     pub fn serialize_path(&self) -> Option<String> {
-        match self.scheme_data {
-            RelativeSchemeData(ref scheme_data) => Some(scheme_data.serialize_path()),
-            NonRelativeSchemeData(..) => None,
-        }
+        self.relative_scheme_data().map(|scheme_data| scheme_data.serialize_path())
     }
 }