There is TcpListener::incoming that turns a TcpListener into an Iterator of incoming TcpStreams, but it has a lifetime. I cannot simply pass the iterator around and manipulate it, because it has 'a lifetime bound to the TcpListener. An alternative that takes over ownership would be appreciated.
1 Like
struct OwnedIncoming(TcpListener);
impl Iterator for OwnedIncoming {
type Item = io::Result<TcpStream>;
fn next(&mut self) -> Option<io::Result<TcpStream>> {
Some(self.listener.accept().map(|p| p.0))
}
}
How exactly are you "manipulating" the iterator?
Probably something like map, chain, filter, for_each
Yes. This is exactly what I'd like to have in stdlib. Can I simply PR it or what is the common process for such a minor change?
You can open a PR: Introduction - Guide to Rustc Development
I opened Add TcpListener::into_incoming and IntoIncoming by piegamesde · Pull Request #88339 · rust-lang/rust · GitHub</, although it complains about missing feature gate and stuff.
Sorry, I linked the wrong section of the book:
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.