via 1.0.1

An async multi-threaded web framework for people who appreciate simplicity.
Documentation
use std::sync::Arc;
use tokio::net::TcpStream;
use tokio_rustls::rustls;
use tokio_rustls::server::TlsStream;
use tokio_rustls::{Accept, TlsAcceptor};

use super::Acceptor;

#[derive(Clone)]
pub struct RustlsAcceptor {
    acceptor: TlsAcceptor,
}

impl RustlsAcceptor {
    pub fn new(config: Arc<rustls::ServerConfig>) -> Self {
        Self {
            acceptor: config.into(),
        }
    }
}

impl Acceptor for RustlsAcceptor {
    type Accepted = Accept<TcpStream>;
    type Stream = TlsStream<TcpStream>;
    type Error = std::io::Error;

    fn accept(&mut self, stream: TcpStream) -> Self::Accepted {
        self.acceptor.accept(stream)
    }
}