IPを返却するサイトからIPアドレスを取得します。
httpbinにreqwest::getすると、String型で返却されるので、serde_jsonを使ってIpの構造体に変換しています。
use reqwest::Client; use serde::{Serialize, Deserialize}; #[derive(Serialize, Deserialize, Debug)] struct Ip { origin: String, } #[tokio::main] async fn main() { let _ = get_ip().await; } // get ip async fn get_ip() -> Result<(), Box<dyn std::error::Error>> { let ip: Ip = serde_json::from_str(&reqwest::get("https://httpbin.org/ip") .await? .text() .await?)?; println!("ip = {:?}", ip.origin); Ok(()) }
Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.08s
Running `target/debug/sample`
ip = “***.***.*.***”
うーむ、なんだかな〜