jid: Remove From<*Jid> for String

Use fmt::Display instead if you want this feature.
This commit is contained in:
Emmanuel Gil Peyrot 2023-06-20 17:37:17 +02:00
parent ccf41fc1e8
commit cdf4486e53

View file

@ -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]