Не используйте text
, который предназначен для текста и поэтому пытается декодировать необработанные байты.
Просто напишите ответ , который реализует Into<Body>
где Body
- это поток (который также более эффективен, чем получение байтов):
let mut client = reqwest::Client::new();
let mut image_file = client
.get("https://images.pexels.com/photos/2124773/pexels-photo-2124773.jpeg")
.send()
.unwrap();
let path = Path::new("img_test.jpeg");
let display = path.display();
let mut file = match File::create(&path) {
Err(why) => panic!("couldn't create {}: {}", display, why.description()),
Ok(file) => file,
};
match std::io::copy(&mut image_file, &mut file) {
Err(why) => panic!("couldn't write to {}: {}", display, why.description()),
Ok(_) => println!("successfully wrote to {}", display),
}