use serde::{Deserialize, Serialize};
#[cfg(feature = "rustls")]
use super::Rustls;
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case", tag = "type")]
pub enum TlsProvider {
#[cfg(feature = "rustls")]
Rustls(Rustls),
#[cfg(not(feature = "rustls"))]
#[serde(skip_serializing, deserialize_with = "missing_rustls_feature")]
Rustls,
None,
}
impl From<TlsProvider> for super::TlsProvider {
fn from(provider: TlsProvider) -> Self {
match provider {
#[cfg(feature = "rustls")]
TlsProvider::Rustls(provider) => super::TlsProvider::Rustls(provider),
_ => super::TlsProvider::None,
}
}
}
#[cfg(not(feature = "rustls"))]
fn missing_rustls_feature<'de, D>(_: D) -> Result<(), D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::de::Error;
Err(Error::custom("missing `rustls` cargo feature"))
}