From e22b4e84309c5819bd1e3135370048058ca8062c Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Tue, 3 Dec 2019 12:29:01 +0300 Subject: [PATCH] Use map_err in Smtp.connect() instead of match --- src/smtp/mod.rs | 58 ++++++++++++++++++++----------------------------- 1 file changed, 24 insertions(+), 34 deletions(-) diff --git a/src/smtp/mod.rs b/src/smtp/mod.rs index ef6fd8a59..950ac2cc3 100644 --- a/src/smtp/mod.rs +++ b/src/smtp/mod.rs @@ -80,15 +80,12 @@ impl Smtp { return Err(Error::BadParameters); } - self.from = match EmailAddress::new(lp.addr.clone()) { - Ok(addr) => Some(addr), - Err(err) => { - return Err(Error::InvalidLoginAddress { - address: lp.addr.clone(), - error: err, - }) - } - }; + let from = + EmailAddress::new(lp.addr.clone()).map_err(|err| Error::InvalidLoginAddress { + address: lp.addr.clone(), + error: err, + })?; + self.from = Some(from); let domain = &lp.send_server; let port = lp.send_port as u16; @@ -135,30 +132,23 @@ impl Smtp { lettre::smtp::ClientSecurity::Wrapper(tls_parameters) }; - match lettre::smtp::SmtpClient::new((domain.as_str(), port), security) { - Ok(client) => { - let client = client - .smtp_utf8(true) - .credentials(creds) - .authentication_mechanism(mechanism) - .connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited); - let mut trans = client.transport(); - match trans.connect() { - Ok(()) => { - self.transport = Some(trans); - self.transport_connected = true; - context.call_cb(Event::SmtpConnected(format!( - "SMTP-LOGIN as {} ok", - lp.send_user, - ))); - return Ok(()); - } - Err(err) => return Err(Error::ConnectionFailure(err)), - } - } - Err(err) => { - return Err(Error::ConnectionSetupFailure(err)); - } - } + let client = lettre::smtp::SmtpClient::new((domain.as_str(), port), security) + .map_err(Error::ConnectionSetupFailure)?; + + let client = client + .smtp_utf8(true) + .credentials(creds) + .authentication_mechanism(mechanism) + .connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited); + let mut trans = client.transport(); + trans.connect().map_err(Error::ConnectionFailure)?; + + self.transport = Some(trans); + self.transport_connected = true; + context.call_cb(Event::SmtpConnected(format!( + "SMTP-LOGIN as {} ok", + lp.send_user, + ))); + Ok(()) } }