Kaynağa Gözat

Manually impl Ord, PartialOrd

Markus Unterwaditzer 11 yıl önce
ebeveyn
işleme
3e72c19581
1 değiştirilmiş dosya ile 14 ekleme ve 1 silme
  1. 14 1
      src/lib.rs

+ 14 - 1
src/lib.rs

@@ -138,6 +138,7 @@ use std::str;
 use std::path::{Path, PathBuf};
 use std::borrow::Borrow;
 use std::hash::{Hash, Hasher};
+use std::cmp::Ordering;
 
 #[cfg(feature="serde_serialization")]
 use std::str::FromStr;
@@ -227,7 +228,7 @@ pub enum SchemeData {
 }
 
 /// Components for URLs in a *relative* scheme such as HTTP.
-#[derive(Clone, Debug, PartialOrd, Ord)]
+#[derive(Clone, Debug)]
 #[cfg_attr(feature="heap_size", derive(HeapSizeOf))]
 pub struct RelativeSchemeData {
     /// The username of the URL, as a possibly empty, percent-encoded string.
@@ -295,6 +296,18 @@ impl Hash for RelativeSchemeData {
     }
 }
 
+impl PartialOrd for RelativeSchemeData {
+    fn partial_cmp(&self, other: &RelativeSchemeData) -> Option<Ordering> {
+        self.get_identity_key().partial_cmp(&other.get_identity_key())
+    }
+}
+
+impl Ord for RelativeSchemeData {
+    fn cmp(&self, other: &Self) -> Ordering {
+        self.get_identity_key().cmp(&other.get_identity_key())
+    }
+}
+
 impl str::FromStr for Url {
     type Err = ParseError;