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 = “***.***.*.***”
うーむ、なんだかな〜