From 0d2fda806475b5a02fcda016078350635b9fd70f Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Sun, 23 Apr 2017 14:49:00 +0100 Subject: [PATCH] implement From on String --- src/lib.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 74f1d3cc..fead7e73 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,6 +34,22 @@ pub struct Jid { pub resource: Option, } +impl From for String { + fn from(jid: Jid) -> String { + let mut string = String::new(); + if let Some(ref node) = jid.node { + string.push_str(node); + string.push('@'); + } + string.push_str(&jid.domain); + if let Some(ref resource) = jid.resource { + string.push('/'); + string.push_str(resource); + } + string + } +} + impl fmt::Display for Jid { fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> { // TODO: may need escaping @@ -313,4 +329,9 @@ mod tests { assert_eq!(Jid::from_str("a/b@c"), Ok(Jid::domain_with_resource("a", "b@c"))); } + + #[test] + fn serialise() { + assert_eq!(String::from(Jid::full("a", "b", "c")), String::from("a@b/c")); + } }