incoming

This crate provides a trait for taking ownership of a [Stream] of incoming connections.

Why?

The types tokio provides, [tokio::net::tcp::Incoming] and [tokio::net::unix::Incoming], are both tied to the lifetime of their respective Listeners [1]. The provided .incoming() used to consume self, but this was changed.

Example

```rust async fn useownedstream(s: S) where S: Stream> + Send + 'static, C: AsyncRead + AsyncWrite + Unpin + Send + 'static, E: Into> + std::fmt::Debug + Unpin + Send + 'static, { tokio::spawn(s.foreachconcurrent(None, |st| async move { handlethisconn(st) })); }

fn main() -> Result<(), Box> { let mut rt = tokio::runtime::Runtime::new()?;

use incoming::IntoIncoming;
rt.block_on(async move {
    let addr: std::net::SocketAddr = "0.0.0.0:4242".parse()?;
    let st = tokio::net::TcpListener::bind(addr).await?;
    use_owned_stream(st.into_incoming()).await;
    Ok(())
})

} ```