pub trait TlsMode: Clone + Default {
const TY: TlsModeTy;
}
#[derive(Clone, Debug, Default)]
pub struct TlsModePlainText {}
impl TlsModePlainText {
#[inline]
pub const fn new() -> Self {
Self {}
}
}
impl TlsMode for TlsModePlainText {
const TY: TlsModeTy = TlsModeTy::PlainText;
}
#[derive(Clone, Debug, Default)]
pub struct TlsModeUnverified {}
impl TlsModeUnverified {
#[inline]
pub const fn new() -> Self {
Self {}
}
}
impl TlsMode for TlsModeUnverified {
const TY: TlsModeTy = TlsModeTy::Unverified;
}
#[derive(Clone, Debug, Default)]
pub struct TlsModeVerified {}
impl TlsModeVerified {
#[inline]
pub const fn new() -> Self {
Self {}
}
}
impl TlsMode for TlsModeVerified {
const TY: TlsModeTy = TlsModeTy::Verified;
}
#[derive(Clone, Debug, Default)]
pub struct TlsModeStrict {}
impl TlsModeStrict {
#[inline]
pub const fn new() -> Self {
Self {}
}
}
impl TlsMode for TlsModeStrict {
const TY: TlsModeTy = TlsModeTy::Strict;
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum TlsModeTy {
PlainText,
Unverified,
#[default]
Verified,
Strict,
}
impl TlsModeTy {
#[inline]
pub const fn is_plain_text(&self) -> bool {
matches!(self, Self::PlainText)
}
#[inline]
pub const fn is_unverified(&self) -> bool {
matches!(self, Self::Unverified)
}
#[inline]
pub const fn require_certs(&self) -> bool {
matches!(self, Self::Verified | Self::Strict)
}
}