Como fazer uma requisição HTTP em Rust?
Olá a todos! Comecei a estudar Rust e me deparei com a tarefa de fazer uma requisição HTTP. Preciso enviar uma requisição GET para uma API externa e obter uma resposta JSON. Tentei usar a biblioteca padrão, mas, pelo que entendi, ela não tem um cliente HTTP embutido.
Tentei escrever algo assim:
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);
}
Mas recebo o erro: error[E0432]: unresolved import 'reqwest'. Aparentemente, preciso adicionar a dependência no Cargo.toml. Como conectar corretamente o crate reqwest? Quais alternativas existem? Estou interessado tanto na versão assíncrona (tokio + reqwest) quanto na bloqueante (simples).
Espero obter um exemplo funcional com tratamento de erros, para que o código não entre em pânico em caso de requisição mal-sucedida. De preferência com parsing de JSON usando serde_json. Desde já, agradeço pela ajuda.