use futures_util::{future, StreamExt, TryStreamExt};
use public_ip::{dns, http, Version};
#[tokio::main]
async fn main() {
let resolver = &[http::HTTP_WHATISMYIPADDRESS_COM, dns::GOOGLE];
let addr = public_ip::resolve(resolver, Version::Any)
.inspect_err(|err| eprintln!("resolver error: {}", err))
.filter_map(|result| future::ready(result.ok()))
.next()
.await
.map(|(addr, _details)| addr);
dbg!(addr);
}