use crate::AsyncTlsStream;
use libtls::error::Error as TlsError;
use std::{error, fmt, io};
#[derive(Debug)]
pub enum Error {
Readable(AsyncTlsStream),
Writeable(AsyncTlsStream),
Handshake(AsyncTlsStream),
Error(TlsError),
}
#[deprecated(
since = "1.1.1",
note = "Please use `Error` instead of `AsyncTlsError`"
)]
pub type AsyncTlsError = Error;
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::Readable(_) => write!(f, "Readable I/O in progress"),
Error::Writeable(_) => write!(f, "Writable I/O in progress"),
Error::Handshake(_) => write!(f, "Handshake I/O in progress"),
Error::Error(err) => err.fmt(f),
}
}
}
impl error::Error for Error {
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
None
}
}
impl From<TlsError> for Error {
fn from(err: TlsError) -> Self {
Error::Error(err)
}
}
impl From<io::Error> for Error {
fn from(err: io::Error) -> Self {
err.into()
}
}
impl From<Error> for io::Error {
fn from(err: Error) -> Self {
io::Error::new(io::ErrorKind::Other, err)
}
}