📚

Rust の tokio, reqwest を利用してインターネットからファイルをダウンロードするサンプル

2021/03/05に公開

コードを読むとわかる。
非同期APIを利用しているので、適宜awaitしてください。
エラー周りは便利なのでanyhowを利用。

use anyhow::Result;
use std::fs::File;
use std::io;

#[tokio::main]
async fn main() -> Result<()> {
    let url = "https://pbs.twimg.com/profile_images/1058802892415455233/_Fat5vje_400x400.jpg";
    let filename = url.split("/").last().unwrap();
    let response: reqwest::Response = reqwest::get(url).await?;
    let bytes = response.bytes().await?;
    let mut out = File::create(filename)?;
    io::copy(&mut bytes.as_ref(), &mut out)?;

    Ok(())
}

Discussion