Avatar ·

Как сделать HTTP запрос в Rust?

Всем привет! Начал изучать Rust и столкнулся с задачей выполнения HTTP-запроса. Нужно отправить GET-запрос к внешнему API и получить JSON-ответ. Пытался использовать стандартную библиотеку, но, как я понял, в ней нет встроенного HTTP-клиента.

Пробовал написать что-то вроде этого:

use std::io::Read;

fn main() {
    let mut response = reqwest::blocking::get("https://api.example.com/data").unwrap();
    let mut body = String::new();
    response.read_to_string(&mut body).unwrap();
    println!("{}", body);
}

Но получаю ошибку: error[E0432]: unresolved import 'reqwest'. Видимо, нужно добавить зависимость в Cargo.toml. Как правильно подключить крейт reqwest? Какие альтернативы существуют? Интересует асинхронный вариант (tokio + reqwest) и блокирующий (простой).

Ожидаю получить рабочий пример с обработкой ошибок, чтобы код не паниковал при неудачном запросе. Желательно с разбором JSON через serde_json. Заранее спасибо за помощь!