From 4586f2ad8af13da946de40dd7b02bad2901d0abd Mon Sep 17 00:00:00 2001 From: Paolo Barbolini Date: Sat, 1 May 2021 18:22:53 +0200 Subject: [PATCH] Remove useless clones (#609) --- src/address/envelope.rs | 9 ++++----- src/transport/smtp/client/async_net.rs | 12 +++--------- src/transport/smtp/client/net.rs | 7 +------ src/transport/smtp/client/tls.rs | 4 ++-- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/address/envelope.rs b/src/address/envelope.rs index b5f18c1..07749a4 100644 --- a/src/address/envelope.rs +++ b/src/address/envelope.rs @@ -116,11 +116,12 @@ impl TryFrom<&Headers> for Envelope { // ... else try From None => match headers.get::() { Some(header::From(a)) => { - let from: Vec = a.into(); + let mut from: Vec = a.into(); if from.len() > 1 { return Err(Error::TooManyFrom); } - Some(from[0].email.clone()) + let from = from.pop().expect("From header has 1 Mailbox"); + Some(from.email) } None => None, }, @@ -131,9 +132,7 @@ impl TryFrom<&Headers> for Envelope { mailboxes: Option, ) { if let Some(mailboxes) = mailboxes { - for mailbox in mailboxes.iter() { - addresses.push(mailbox.email.clone()); - } + addresses.extend(mailboxes.into_iter().map(|mb| mb.email)); } } let mut to = vec![]; diff --git a/src/transport/smtp/client/async_net.rs b/src/transport/smtp/client/async_net.rs index 26eb991..eef49df 100644 --- a/src/transport/smtp/client/async_net.rs +++ b/src/transport/smtp/client/async_net.rs @@ -1,9 +1,3 @@ -#[cfg(any( - feature = "tokio02-rustls-tls", - feature = "tokio1-rustls-tls", - feature = "async-std1-rustls-tls" -))] -use std::sync::Arc; use std::{ mem, net::SocketAddr, @@ -303,7 +297,7 @@ impl AsyncNetworkStream { let domain = DNSNameRef::try_from_ascii_str(&domain).map_err(error::connection)?; - let connector = TlsConnector::from(Arc::new(config)); + let connector = TlsConnector::from(config); let stream = connector .connect(domain, tcp_stream) .await @@ -352,7 +346,7 @@ impl AsyncNetworkStream { let domain = DNSNameRef::try_from_ascii_str(&domain).map_err(error::connection)?; - let connector = TlsConnector::from(Arc::new(config)); + let connector = TlsConnector::from(config); let stream = connector .connect(domain, tcp_stream) .await @@ -404,7 +398,7 @@ impl AsyncNetworkStream { let domain = DNSNameRef::try_from_ascii_str(&domain).map_err(error::connection)?; - let connector = TlsConnector::from(Arc::new(config)); + let connector = TlsConnector::from(config); let stream = connector .connect(domain, tcp_stream) .await diff --git a/src/transport/smtp/client/net.rs b/src/transport/smtp/client/net.rs index 8e419e9..40ad6b0 100644 --- a/src/transport/smtp/client/net.rs +++ b/src/transport/smtp/client/net.rs @@ -1,5 +1,3 @@ -#[cfg(feature = "rustls-tls")] -use std::sync::Arc; use std::{ io::{self, Read, Write}, mem, @@ -155,10 +153,7 @@ impl NetworkStream { let domain = DNSNameRef::try_from_ascii_str(tls_parameters.domain()) .map_err(error::connection)?; - let stream = StreamOwned::new( - ClientSession::new(&Arc::new(connector.clone()), domain), - tcp_stream, - ); + let stream = StreamOwned::new(ClientSession::new(&connector, domain), tcp_stream); InnerNetworkStream::RustlsTls(stream) } diff --git a/src/transport/smtp/client/tls.rs b/src/transport/smtp/client/tls.rs index 2a8e81c..531f893 100644 --- a/src/transport/smtp/client/tls.rs +++ b/src/transport/smtp/client/tls.rs @@ -179,7 +179,7 @@ impl TlsParametersBuilder { tls.root_store.add_server_trust_anchors(&TLS_SERVER_ROOTS); Ok(TlsParameters { - connector: InnerTlsParameters::RustlsTls(tls), + connector: InnerTlsParameters::RustlsTls(Arc::new(tls)), domain: self.domain, }) } @@ -190,7 +190,7 @@ pub enum InnerTlsParameters { #[cfg(feature = "native-tls")] NativeTls(TlsConnector), #[cfg(feature = "rustls-tls")] - RustlsTls(ClientConfig), + RustlsTls(Arc), } impl TlsParameters {