pub async fn addr_with_details(
    resolver: impl Resolver<'_>,
    version: Version,
) -> Option<(IpAddr, Details)> {
    resolve(resolver, version)
        .filter_map(|result| future::ready(result.ok()))
        .next()
        .await
}
/// Given a [`Resolver`] and requested [`Version`], attempts to produce an IP
/// address along with the details of how it was resolved (best effort).
///
/// This function will attempt to resolve until the stream is empty and will
/// drop/ignore any resolver errors.
Given a [`Resolver`] and requested [`Version`], attempts to produce an IP
address along with the details of how it was resolved (best effort).

This function will attempt to resolve until the stream is empty and will
drop/ignore any resolver errors.
Given a [ ` Resolver ` ] and requested [ ` Version ` ] attempts to produce an IP address along with the details of how it was resolved ( best effort ) . This function will attempt to resolve until the stream is empty and will drop / ignore any resolver errors .
pub async fn addr_with_details(
    resolver: impl Resolver<'_>,
    version: Version,
) -> Option<(IpAddr, Details)> {
    resolve(resolver, version)
        .filter_map(|result| future::ready(result.ok()))
        .next()
        .await
}
pub async fn addr_with_details ( resolver : impl Resolver < ' _ > , version : Version , ) -> Option < ( IpAddr , Details ) > { resolve ( resolver , version ) . filter_map ( | result | future :: ready ( result . ok ( ) ) ) . next ( ) . await }
Given a [`Resolver`] and requested [`Version`], attempts to produce an IP
address along with the details of how it was resolved (best effort).
Given a [ ` Resolver ` ] and requested [ ` Version ` ] attempts to produce an IP address along with the details of how it was resolved ( best effort ) .
resolver
impl Resolver<'_>
version
Version