Skip to content

Commit dbd575f

Browse files
committed
refactor: remove irrefutable let lints
1 parent 04fdd5d commit dbd575f

File tree

3 files changed

+66
-65
lines changed

3 files changed

+66
-65
lines changed

sqlx-core/src/net/tls/tls_native_tls.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,21 @@ impl<S: Socket> Socket for NativeTlsSocket<S> {
4242

4343
impl TlsConfig<'_> {
4444
async fn native_tls_connector(&self) -> crate::Result<(native_tls::TlsConnector, &str), Error> {
45-
#[allow(irrefutable_let_patterns)]
46-
let TlsConfig::RawTlsConfig(RawTlsConfig {
45+
let RawTlsConfig {
4746
root_cert,
4847
client_cert,
4948
client_key,
5049
accept_invalid_certs,
5150
accept_invalid_hostnames,
5251
hostname,
53-
}) = self
54-
else {
55-
unreachable!()
52+
} = match self {
53+
TlsConfig::RawTlsConfig(raw) => raw,
54+
#[cfg(feature = "_tls-rustls")]
55+
TlsConfig::PrebuiltRustls { .. } => {
56+
return Err(Error::Configuration(
57+
"prebuilt rustls config requires the rustls TLS backend".into(),
58+
))
59+
}
5660
};
5761

5862
let mut builder = native_tls::TlsConnector::builder();

sqlx-mysql/src/options/mod.rs

Lines changed: 26 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,26 @@ impl MySqlConnectOptions {
126126
}
127127
}
128128

129+
fn mysql_ssl_config_mut(&mut self) -> &mut MySqlSslConfig {
130+
#[cfg(feature = "rustls")]
131+
{
132+
if matches!(self.ssl_config, SslConfig::Rustls(_)) {
133+
self.ssl_config = SslConfig::MySql(MySqlSslConfig::default());
134+
}
135+
136+
match &mut self.ssl_config {
137+
SslConfig::MySql(config) => config,
138+
SslConfig::Rustls(_) => unreachable!("just set to MySql"),
139+
}
140+
}
141+
142+
#[cfg(not(feature = "rustls"))]
143+
{
144+
let SslConfig::MySql(config) = &mut self.ssl_config;
145+
config
146+
}
147+
}
148+
129149
/// Sets the name of the host to connect to.
130150
///
131151
/// The default behavior when the host is not specified,
@@ -200,15 +220,7 @@ impl MySqlConnectOptions {
200220
/// ```
201221
pub fn ssl_ca(mut self, file_name: impl AsRef<Path>) -> Self {
202222
let cert = Some(CertificateInput::File(file_name.as_ref().to_owned()));
203-
#[allow(irrefutable_let_patterns)]
204-
if let SslConfig::MySql(c) = &mut self.ssl_config {
205-
c.root_cert = cert;
206-
} else {
207-
self.ssl_config = SslConfig::MySql(MySqlSslConfig {
208-
root_cert: cert,
209-
..Default::default()
210-
});
211-
}
223+
self.mysql_ssl_config_mut().root_cert = cert;
212224
self
213225
}
214226

@@ -224,15 +236,7 @@ impl MySqlConnectOptions {
224236
/// ```
225237
pub fn ssl_ca_from_pem(mut self, pem_certificate: Vec<u8>) -> Self {
226238
let cert = Some(CertificateInput::Inline(pem_certificate));
227-
#[allow(irrefutable_let_patterns)]
228-
if let SslConfig::MySql(c) = &mut self.ssl_config {
229-
c.root_cert = cert;
230-
} else {
231-
self.ssl_config = SslConfig::MySql(MySqlSslConfig {
232-
root_cert: cert,
233-
..Default::default()
234-
});
235-
}
239+
self.mysql_ssl_config_mut().root_cert = cert;
236240
self
237241
}
238242

@@ -248,15 +252,7 @@ impl MySqlConnectOptions {
248252
/// ```
249253
pub fn ssl_client_cert(mut self, cert: impl AsRef<Path>) -> Self {
250254
let cert = Some(CertificateInput::File(cert.as_ref().to_path_buf()));
251-
#[allow(irrefutable_let_patterns)]
252-
if let SslConfig::MySql(c) = &mut self.ssl_config {
253-
c.client_cert = cert;
254-
} else {
255-
self.ssl_config = SslConfig::MySql(MySqlSslConfig {
256-
client_cert: cert,
257-
..Default::default()
258-
});
259-
}
255+
self.mysql_ssl_config_mut().client_cert = cert;
260256
self
261257
}
262258

@@ -282,15 +278,7 @@ impl MySqlConnectOptions {
282278
/// ```
283279
pub fn ssl_client_cert_from_pem(mut self, cert: impl AsRef<[u8]>) -> Self {
284280
let cert = Some(CertificateInput::Inline(cert.as_ref().to_vec()));
285-
#[allow(irrefutable_let_patterns)]
286-
if let SslConfig::MySql(c) = &mut self.ssl_config {
287-
c.client_cert = cert;
288-
} else {
289-
self.ssl_config = SslConfig::MySql(MySqlSslConfig {
290-
client_cert: cert,
291-
..Default::default()
292-
});
293-
}
281+
self.mysql_ssl_config_mut().client_cert = cert;
294282
self
295283
}
296284

@@ -306,15 +294,7 @@ impl MySqlConnectOptions {
306294
/// ```
307295
pub fn ssl_client_key(mut self, key: impl AsRef<Path>) -> Self {
308296
let key = Some(CertificateInput::File(key.as_ref().to_path_buf()));
309-
#[allow(irrefutable_let_patterns)]
310-
if let SslConfig::MySql(c) = &mut self.ssl_config {
311-
c.client_key = key;
312-
} else {
313-
self.ssl_config = SslConfig::MySql(MySqlSslConfig {
314-
client_key: key,
315-
..Default::default()
316-
});
317-
}
297+
self.mysql_ssl_config_mut().client_key = key;
318298
self
319299
}
320300

@@ -340,15 +320,7 @@ impl MySqlConnectOptions {
340320
/// ```
341321
pub fn ssl_client_key_from_pem(mut self, key: impl AsRef<[u8]>) -> Self {
342322
let key = Some(CertificateInput::Inline(key.as_ref().to_vec()));
343-
#[allow(irrefutable_let_patterns)]
344-
if let SslConfig::MySql(c) = &mut self.ssl_config {
345-
c.client_key = key;
346-
} else {
347-
self.ssl_config = SslConfig::MySql(MySqlSslConfig {
348-
client_key: key,
349-
..Default::default()
350-
});
351-
}
323+
self.mysql_ssl_config_mut().client_key = key;
352324
self
353325
}
354326

sqlx-mysql/src/options/parse.rs

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,38 @@ impl MySqlConnectOptions {
112112
};
113113
url.query_pairs_mut().append_pair("ssl-mode", ssl_mode);
114114

115-
#[allow(irrefutable_let_patterns)]
116-
if let SslConfig::MySql(MySqlSslConfig {
117-
root_cert,
118-
client_cert,
119-
client_key,
120-
}) = &self.ssl_config
115+
#[cfg(feature = "rustls")]
116+
match &self.ssl_config {
117+
SslConfig::MySql(MySqlSslConfig {
118+
root_cert,
119+
client_cert,
120+
client_key,
121+
}) => {
122+
if let Some(root_cert) = root_cert {
123+
url.query_pairs_mut()
124+
.append_pair("ssl-ca", &root_cert.to_string());
125+
}
126+
if let Some(client_cert) = client_cert {
127+
url.query_pairs_mut()
128+
.append_pair("ssl-cert", &client_cert.to_string());
129+
}
130+
131+
if let Some(client_key) = client_key {
132+
url.query_pairs_mut()
133+
.append_pair("ssl-key", &client_key.to_string());
134+
}
135+
}
136+
SslConfig::Rustls(_) => {}
137+
}
138+
139+
#[cfg(not(feature = "rustls"))]
121140
{
141+
let SslConfig::MySql(MySqlSslConfig {
142+
root_cert,
143+
client_cert,
144+
client_key,
145+
}) = &self.ssl_config;
146+
122147
if let Some(root_cert) = root_cert {
123148
url.query_pairs_mut()
124149
.append_pair("ssl-ca", &root_cert.to_string());

0 commit comments

Comments
 (0)