use core::fmt::{Display, Formatter};
use serde::*;
use crate::Error;
#[cfg(feature = "quic")]
#[derive(Clone, Debug, thiserror::Error, PartialEq, Serialize, Deserialize)]
pub enum Quic {
#[error("Error acquiring owned connection")]
Connection,
#[error("Error reading .pem key file")]
ReadKeys,
#[error("No certificate path was provided")]
NoProvidedCertPath,
#[error("`quinn::ConnectError`-based error")]
ConnectError,
#[error("`quinn::ConnectionError`-based error")]
ConnectionError,
#[error("`quinn::WriteError`-based error")]
WriteError,
#[error("`quinn::ReadError`-based error")]
ReadError,
#[error("Rustls-based webpki error around adding certificate to RootCertStore")]
Webpki,
#[error("`rustls::Error`-based error")]
RustlsError,
}
impl From<quinn::ConnectError> for Quic {
fn from(error: quinn::ConnectError) -> Self {
Quic::ConnectError
}
}
impl From<quinn::ConnectError> for crate::Error {
fn from(error: quinn::ConnectError) -> Self {
Error::Quic(error.into())
}
}
impl From<quinn::ConnectionError> for Quic {
fn from(error: quinn::ConnectionError) -> Self {
Quic::ConnectionError
}
}
impl From<quinn::ConnectionError> for crate::Error {
fn from(error: quinn::ConnectionError) -> Self {
Error::Quic(error.into())
}
}
impl From<quinn::WriteError> for Quic {
fn from(error: quinn::WriteError) -> Self {
Quic::WriteError
}
}
impl From<quinn::WriteError> for crate::Error {
fn from(error: quinn::WriteError) -> Self {
Error::Quic(error.into())
}
}
impl From<quinn::ReadError> for Quic {
fn from(error: quinn::ReadError) -> Self {
Quic::ReadError
}
}
impl From<quinn::ReadError> for crate::Error {
fn from(error: quinn::ReadError) -> Self {
Error::Quic(error.into())
}
}
impl From<rustls::Error> for Quic {
fn from(error: rustls::Error) -> Self {
Quic::RustlsError
}
}
impl From<rustls::Error> for crate::Error {
fn from(error: rustls::Error) -> Self {
Error::Quic(error.into())
}
}