Skip to main content

mysql_async/error/tls/
rustls_error.rs

1#![cfg(feature = "rustls")]
2
3use std::fmt::Display;
4
5use rustls::server::VerifierBuilderError;
6
7#[derive(Debug)]
8pub enum TlsError {
9    Tls(rustls::Error),
10    InvalidDnsName(rustls::pki_types::InvalidDnsNameError),
11    Pem(rustls::pki_types::pem::Error),
12    VerifierBuilderError(VerifierBuilderError),
13}
14
15impl From<TlsError> for crate::Error {
16    fn from(e: TlsError) -> Self {
17        crate::Error::Io(crate::error::IoError::Tls(e))
18    }
19}
20
21impl From<VerifierBuilderError> for TlsError {
22    fn from(e: VerifierBuilderError) -> Self {
23        TlsError::VerifierBuilderError(e)
24    }
25}
26
27impl From<rustls::Error> for TlsError {
28    fn from(e: rustls::Error) -> Self {
29        TlsError::Tls(e)
30    }
31}
32
33impl From<rustls::pki_types::InvalidDnsNameError> for TlsError {
34    fn from(e: rustls::pki_types::InvalidDnsNameError) -> Self {
35        TlsError::InvalidDnsName(e)
36    }
37}
38
39impl From<rustls::pki_types::pem::Error> for TlsError {
40    fn from(e: rustls::pki_types::pem::Error) -> Self {
41        TlsError::Pem(e)
42    }
43}
44
45impl From<rustls::Error> for crate::Error {
46    fn from(e: rustls::Error) -> Self {
47        crate::Error::Io(crate::error::IoError::Tls(e.into()))
48    }
49}
50
51impl From<rustls::pki_types::pem::Error> for crate::Error {
52    fn from(e: rustls::pki_types::pem::Error) -> Self {
53        crate::Error::Io(crate::error::IoError::Tls(e.into()))
54    }
55}
56
57impl std::error::Error for TlsError {
58    fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
59        match self {
60            TlsError::Tls(e) => Some(e),
61            TlsError::InvalidDnsName(e) => Some(e),
62            TlsError::Pem(e) => Some(e),
63            TlsError::VerifierBuilderError(e) => Some(e),
64        }
65    }
66}
67
68impl Display for TlsError {
69    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
70        match self {
71            TlsError::Tls(e) => e.fmt(f),
72            TlsError::InvalidDnsName(e) => e.fmt(f),
73            TlsError::Pem(e) => e.fmt(f),
74            TlsError::VerifierBuilderError(e) => e.fmt(f),
75        }
76    }
77}