mysql_async/error/tls/
rustls_error.rs1#![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}