Skip to main content

Acceptor

Trait Acceptor 

Source
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: Debug + Send + Sync; // Required method fn accept<'life0, 'async_trait>( &'life0 self, input: Input, ) -> Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; }
Expand description

This trait provides a common interface for server-side tls acceptors, abstracting over various implementations.

The only implementation provided by this crate is (), which is a noop acceptor, and passes through the Input type.

Implementing this trait looks like:

#[async_trait]
impl<Input> Acceptor<Input> for my_tls_impl::Acceptor
where
    Input: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static,
{
    type Output = my_tls_impl::TlsStream<Input>;
    type Error = my_tls_impl::Error;
    async fn accept(&self, input: Input) -> Result<Self::Output, Self::Error> {
        self.accept(input).await
    }
}

Required Associated Types§

Source

type Output: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static

The stream type. For example, TlsStream<Input>

Source

type Error: Debug + Send + Sync

An error type that Acceptor::accept may return

Required Methods§

Source

fn accept<'life0, 'async_trait>( &'life0 self, input: Input, ) -> Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Transform an Input (AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static) into Self::Output

Async trait signature:

async fn accept(&self, input: Input) -> Result<Self::Output, Self::Error>;

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<Input> Acceptor<Input> for ()
where Input: AsyncRead + AsyncWrite + Send + Sync + Unpin + 'static,

Source§

type Output = Input

Source§

type Error = Infallible

Source§

fn accept<'life0, 'async_trait>( &'life0 self, input: Input, ) -> Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Implementors§