use std::error::Error; use std::net::IpAddr; use std::str::FromStr; use reqwest::Url; #[cfg(test)] mod test; fn main() { println!("Hello, world!"); } pub struct IpService {} impl IpService { async fn resolve(config: &impl IpServiceConfiguration) -> Result> { let response = reqwest::get(config.get_service_url()).await.unwrap(); Ok(IpAddr::from_str(&response.text().await.unwrap())?) } } pub trait IpServiceConfiguration { fn get_service_url(&self) -> Url; }