@@ -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
0 commit comments