qinterface 0.4.0

gm-quic's packet routing and definition of the underlying IO interface
Documentation
pub mod handy;

use std::io;

use qbase::net::addr::BindUri;

use crate::QuicIO;

pub trait ProductQuicIO: Send + Sync {
    fn bind(&self, bind_uri: BindUri) -> io::Result<Box<dyn QuicIO>>;
}

impl<F, Q> ProductQuicIO for F
where
    F: Fn(BindUri) -> io::Result<Q> + Send + Sync,
    Q: QuicIO + 'static,
{
    #[inline]
    fn bind(&self, bind_uri: BindUri) -> io::Result<Box<dyn QuicIO>> {
        Ok(Box::new((self)(bind_uri)?))
    }
}