Здравствуйте. Я изучаю Rust около недели, потому что один Python мне изрядно поднадоел. Решил открыть для себя что-то новое. Итак, посмотрел сами основы, вроде бы ничего необычного, но потом я захотел сделать то, что делал на Python. А именно с самого начала я всегда пытался сделать что-то достаточно сложное. И вот я добрался до скачиваний файла.
По сути, скачивание файла — это ведь получение байтов? И если в Python это можно сделать запросом с помощью одной библиотеки, после чего записать всё в файл, то и в Расте можно. Так ведь?
Я переглянул туториалы и примеры на эту тему, но так толком ничего и не понял. Сначала функция main() не может быть асинхронной, потом
Result is a type that represents either success (Ok) or failure (Err). Пытался получить данные с помощью reqwest::get() и hyper, но всегда возникала проблема с асинхронностью и записью данных (которые я не мог получить) в файл.
Даже если всё вроде бы нормально, всё равно что-то пойдёт не так.
485 | pub enum Result<T, E> {
| ^^^^^^ - -
help: add missing generic argument
|
6 | async fn main() -> Result<(), E> {
use std::path::Path;
use std::fs::File;
use std::io::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
let target = "https://www.rust-lang.org/static/images/rust-logo-blk.svg";
let response = reqwest::get(target).await?;
let path = Path::new("C:/Users/polzo/Desktop/image.svg");
let mut file = match File::create(&path) {
Err(why) => panic!("couldn't create {}", why),
Ok(file) => file,
};
let content = response.text().await?;
file.write_all(content.as_bytes())?;
Ok(())
}
(Скопировал с примера в интернете)
Каким способом это можно сделать, чтобы даже новичку более-менее было, о чём идёт речь?