Open
Description
I have some code that implements this using wrapper types, but would really love for a trait like this to exist:
A proposed async-tls-acceptor crate that publishes this trait:
#[async_trait]
pub trait Acceptor<Input>: Clone + Send + Sync + 'static
where
Input: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static,
{
type Output: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static;
type Error: std::fmt::Debug + Send + Sync;
async fn accept(&self, input: Input) -> Result<Self::Output, Self::Error>;
}
The implementation for async-native-tls would be:
#[async_trait]
impl<Input> Acceptor<Input> for async_native_tls::TlsAcceptor
where
Input: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static,
{
type Output = async_native_tls::TlsStream<Input>;
type Error = async_native_tls::Error;
async fn accept(&self, input: Input) -> Result<Self::Output, Self::Error> {
async_native_tls::TlsAcceptor::accept(&self, input).await
}
}
Would this be welcomed?
refs: async-rs/async-tls#43
Metadata
Metadata
Assignees
Labels
No labels