extern crate curl; use curl::easy::Easy; use std::fs::File; use std::io::prelude::*; // Capture output into a local `Vec`. fn main() { let mut dst = Vec::new(); let mut easy = Easy::new(); easy.url("http://mirrors.advancedhosters.com/archlinux/core/os/x86_64/bash-5.0.009-1-x86_64.pkg.tar.xz").unwrap(); let mut transfer = easy.transfer(); transfer.write_function(|data| { dst.extend_from_slice(data); Ok(data.len()) }).unwrap(); transfer.perform().unwrap(); let mut file = std::fs::File::create("./bash.pkg.tar.xz").expect("file creation failed"); file.write_all(&dst).expect("failed to write file"); }