Skip to content

Commit b3841c8

Browse files
committed
chore(tls): simplified IntoCertCompressionAlgorithm macro impl
1 parent 62d6266 commit b3841c8

File tree

3 files changed

+25
-50
lines changed

3 files changed

+25
-50
lines changed

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
//! ```
9393
//!
9494
//! ## Making a GET request
95-
//!
95+
//!
9696
//! Making a GET request is simple.
9797
//!
9898
//! ```rust

src/tls/config.rs

+23-47
Original file line numberDiff line numberDiff line change
@@ -238,65 +238,41 @@ impl_into_root_cert_store_for_types!(
238238
/// This trait is used to provide a unified way to convert different types
239239
/// into an optional `Cow` containing a slice of `CertCompressionAlgorithm`.
240240
pub trait IntoCertCompressionAlgorithm {
241-
/// Converts the implementing type into an optional `Cow` containing a slice of `CertCompressionAlgorithm`.
242241
fn into(self) -> Option<Cow<'static, [CertCompressionAlgorithm]>>;
243242
}
244243

245-
macro_rules! impl_into_cert_compression_algorithm_for_types {
246-
($($t:ty => $body:expr),*) => {
247-
$(
248-
impl IntoCertCompressionAlgorithm for $t {
249-
fn into(self) -> Option<Cow<'static, [CertCompressionAlgorithm]>> {
250-
$body(self)
251-
}
252-
}
253-
)*
254-
};
255-
}
256-
257-
macro_rules! impl_into_cert_compression_algorithm_for_arrays {
258-
($($t:ty => $body:expr),*) => {
259-
$(
260-
impl<const N: usize> IntoCertCompressionAlgorithm for $t {
261-
fn into(self) -> Option<Cow<'static, [CertCompressionAlgorithm]>> {
262-
$body(self)
263-
}
244+
macro_rules! impl_into_cert_compression_algorithm {
245+
($($t:ty => $body:expr),* $(,)?) => {
246+
$(impl IntoCertCompressionAlgorithm for $t {
247+
fn into(self) -> Option<Cow<'static, [CertCompressionAlgorithm]>> {
248+
$body(self)
264249
}
265-
)*
250+
})*
266251
};
267252
}
268253

269-
impl_into_cert_compression_algorithm_for_types!(
254+
impl_into_cert_compression_algorithm!(
270255
&'static [CertCompressionAlgorithm] => |s| Some(Cow::Borrowed(s)),
271-
Option<&'static [CertCompressionAlgorithm]> => |s: Option<&'static [CertCompressionAlgorithm]>| s.map(Cow::Borrowed)
272-
);
273-
274-
impl_into_cert_compression_algorithm_for_types!(
275256
Cow<'static, [CertCompressionAlgorithm]> => Some,
276-
Option<Cow<'static, [CertCompressionAlgorithm]>> => |s| s
277-
);
278-
279-
impl_into_cert_compression_algorithm_for_types!(
280257
&'static CertCompressionAlgorithm => |s: &'static CertCompressionAlgorithm| Some(Cow::Owned(vec![*s])),
281-
Option<&'static CertCompressionAlgorithm> => |s: Option<&'static CertCompressionAlgorithm>| s.map(|alg| Cow::Owned(vec![*alg]))
282-
);
283-
284-
impl_into_cert_compression_algorithm_for_types!(
285258
CertCompressionAlgorithm => |s| Some(Cow::Owned(vec![s])),
286-
Option<CertCompressionAlgorithm> => |s: Option<CertCompressionAlgorithm>| s.map(|alg| Cow::Owned(vec![alg]))
287-
);
288-
289-
impl_into_cert_compression_algorithm_for_types!(
290259
Vec<CertCompressionAlgorithm> => |s| Some(Cow::Owned(s)),
291-
Option<Vec<CertCompressionAlgorithm>> => |s: Option<Vec<CertCompressionAlgorithm>>| s.map(Cow::Owned)
292260
);
293261

294-
impl_into_cert_compression_algorithm_for_arrays!(
295-
&'static [CertCompressionAlgorithm; N] => |s: &'static [CertCompressionAlgorithm; N]| Some(Cow::Borrowed(&s[..])),
296-
Option<&'static [CertCompressionAlgorithm; N]> => |s: Option<&'static [CertCompressionAlgorithm; N]>| s.map(|s| Cow::Borrowed(&s[..]))
297-
);
262+
impl<const N: usize> IntoCertCompressionAlgorithm for &'static [CertCompressionAlgorithm; N] {
263+
fn into(self) -> Option<Cow<'static, [CertCompressionAlgorithm]>> {
264+
Some(Cow::Borrowed(self))
265+
}
266+
}
298267

299-
impl_into_cert_compression_algorithm_for_arrays!(
300-
[CertCompressionAlgorithm; N] => |s: [CertCompressionAlgorithm; N]| Some(Cow::Owned(s.to_vec())),
301-
Option<[CertCompressionAlgorithm; N]> => |s: Option<[CertCompressionAlgorithm; N]>| s.map(|arr| Cow::Owned(arr.to_vec()))
302-
);
268+
impl<const N: usize> IntoCertCompressionAlgorithm for [CertCompressionAlgorithm; N] {
269+
fn into(self) -> Option<Cow<'static, [CertCompressionAlgorithm]>> {
270+
Some(Cow::Owned(self.to_vec()))
271+
}
272+
}
273+
274+
impl<T: IntoCertCompressionAlgorithm> IntoCertCompressionAlgorithm for Option<T> {
275+
fn into(self) -> Option<Cow<'static, [CertCompressionAlgorithm]>> {
276+
self.and_then(|v| v.into())
277+
}
278+
}

src/tls/ext.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use super::{AlpnProtos, AlpsProtos, CertStore, TlsResult, TlsVersion};
2-
use crate::tls::certs::LOAD_CERTS;
1+
use super::{AlpnProtos, AlpsProtos, CertStore, TlsResult, TlsVersion, certs::LOAD_CERTS};
32
use boring2::ssl::{
43
CertCompressionAlgorithm, ConnectConfiguration, SslConnectorBuilder, SslOptions, SslRef,
54
SslVerifyMode,

0 commit comments

Comments
 (0)