jid: Remove From<*Jid> for String

Emmanuel Gil Peyrot created

Use fmt::Display instead if you want this feature.

Change summary

jid/src/lib.rs | 73 ++++++++++++---------------------------------------
1 file changed, 17 insertions(+), 56 deletions(-)

Detailed changes

jid/src/lib.rs 🔗

@@ -49,24 +49,6 @@ impl FromStr for Jid {
     }
 }
 
-impl From<Jid> for String {
-    fn from(jid: Jid) -> String {
-        match jid {
-            Jid::Bare(bare) => String::from(bare),
-            Jid::Full(full) => String::from(full),
-        }
-    }
-}
-
-impl From<&Jid> for String {
-    fn from(jid: &Jid) -> String {
-        match jid {
-            Jid::Bare(bare) => String::from(bare),
-            Jid::Full(full) => String::from(full),
-        }
-    }
-}
-
 impl From<BareJid> for Jid {
     fn from(bare_jid: BareJid) -> Jid {
         Jid::Bare(bare_jid)
@@ -81,7 +63,10 @@ impl From<FullJid> for Jid {
 
 impl fmt::Display for Jid {
     fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
-        fmt.write_str(String::from(self.clone()).as_ref())
+        match self {
+            Jid::Bare(bare) => bare.fmt(fmt),
+            Jid::Full(full) => full.fmt(fmt),
+        }
     }
 }
 
@@ -228,30 +213,6 @@ pub struct BareJid {
     inner: InnerJid,
 }
 
-impl From<FullJid> for String {
-    fn from(jid: FullJid) -> String {
-        String::from(&jid)
-    }
-}
-
-impl From<&FullJid> for String {
-    fn from(jid: &FullJid) -> String {
-        jid.inner.normalized.clone()
-    }
-}
-
-impl From<BareJid> for String {
-    fn from(jid: BareJid) -> String {
-        String::from(&jid)
-    }
-}
-
-impl From<&BareJid> for String {
-    fn from(jid: &BareJid) -> String {
-        jid.inner.normalized.clone()
-    }
-}
-
 impl fmt::Debug for FullJid {
     fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
         write!(fmt, "FullJID({})", self)
@@ -266,13 +227,13 @@ impl fmt::Debug for BareJid {
 
 impl fmt::Display for FullJid {
     fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
-        fmt.write_str(String::from(self.clone()).as_ref())
+        fmt.write_str(&self.inner.normalized)
     }
 }
 
 impl fmt::Display for BareJid {
     fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
-        fmt.write_str(String::from(self.clone()).as_ref())
+        fmt.write_str(&self.inner.normalized)
     }
 }
 
@@ -471,42 +432,42 @@ use minidom::{IntoAttributeValue, Node};
 #[cfg(feature = "minidom")]
 impl IntoAttributeValue for Jid {
     fn into_attribute_value(self) -> Option<String> {
-        Some(String::from(self))
+        Some(format!("{}", self))
     }
 }
 
 #[cfg(feature = "minidom")]
 impl From<Jid> for Node {
     fn from(jid: Jid) -> Node {
-        Node::Text(String::from(jid))
+        Node::Text(format!("{}", jid))
     }
 }
 
 #[cfg(feature = "minidom")]
 impl IntoAttributeValue for FullJid {
     fn into_attribute_value(self) -> Option<String> {
-        Some(String::from(self))
+        Some(format!("{}", self))
     }
 }
 
 #[cfg(feature = "minidom")]
 impl From<FullJid> for Node {
     fn from(jid: FullJid) -> Node {
-        Node::Text(String::from(jid))
+        Node::Text(format!("{}", jid))
     }
 }
 
 #[cfg(feature = "minidom")]
 impl IntoAttributeValue for BareJid {
     fn into_attribute_value(self) -> Option<String> {
-        Some(String::from(self))
+        Some(format!("{}", self))
     }
 }
 
 #[cfg(feature = "minidom")]
 impl From<BareJid> for Node {
     fn from(jid: BareJid) -> Node {
-        Node::Text(String::from(jid))
+        Node::Text(format!("{}", jid))
     }
 }
 
@@ -621,11 +582,11 @@ mod tests {
     #[test]
     fn serialise() {
         assert_eq!(
-            String::from(FullJid::new("a@b/c").unwrap()),
+            format!("{}", FullJid::new("a@b/c").unwrap()),
             String::from("a@b/c")
         );
         assert_eq!(
-            String::from(BareJid::new("a@b").unwrap()),
+            format!("{}", BareJid::new("a@b").unwrap()),
             String::from("a@b")
         );
     }
@@ -701,19 +662,19 @@ mod tests {
         let elem = minidom::Element::builder("message", "jabber:client")
             .attr("from", full.clone())
             .build();
-        assert_eq!(elem.attr("from"), Some(String::from(full).as_ref()));
+        assert_eq!(elem.attr("from"), Some(format!("{}", full).as_str()));
 
         let bare = BareJid::new("a@b").unwrap();
         let elem = minidom::Element::builder("message", "jabber:client")
             .attr("from", bare.clone())
             .build();
-        assert_eq!(elem.attr("from"), Some(String::from(bare.clone()).as_ref()));
+        assert_eq!(elem.attr("from"), Some(format!("{}", bare).as_str()));
 
         let jid = Jid::Bare(bare.clone());
         let _elem = minidom::Element::builder("message", "jabber:client")
             .attr("from", jid)
             .build();
-        assert_eq!(elem.attr("from"), Some(String::from(bare).as_ref()));
+        assert_eq!(elem.attr("from"), Some(format!("{}", bare).as_str()));
     }
 
     #[test]