compio 0.18.0

Completion based async runtime
Documentation
use compio::net::ToSocketAddrsAsync;
use futures_util::{StreamExt, stream::FuturesUnordered};

#[compio::main]
async fn main() {
    let mut tasks = std::env::args()
        .skip(1)
        .map(|name| async move {
            (
                (name.as_str(), 0).to_socket_addrs_async().await.unwrap(),
                name,
            )
        })
        .collect::<FuturesUnordered<_>>();
    while let Some((addrs, name)) = tasks.next().await {
        println!("Address of {name}");
        for addr in addrs {
            println!("    {}", addr.ip());
        }
    }
}