Avatar ·

¿Cómo hacer una solicitud HTTP en Rust?

¡Hola a todos! Empecé a estudiar Rust y me encontré con la tarea de realizar una solicitud HTTP. Necesito enviar una solicitud GET a una API externa y obtener una respuesta JSON. Intenté usar la biblioteca estándar, pero, según entendí, no tiene un cliente HTTP incorporado.

Probé escribir algo como esto:

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);
}

Pero recibo un error: error[E0432]: unresolved import 'reqwest'. Aparentemente, necesito agregar una dependencia en Cargo.toml. ¿Cómo conectar correctamente el crate reqwest? ¿Qué alternativas existen? Me interesa la variante asíncrona (tokio + reqwest) y la bloqueante (simple).

Espero obtener un ejemplo funcional con manejo de errores, para que el código no entre en pánico ante una solicitud fallida. Preferiblemente con análisis de JSON usando serde_json. Gracias de antemano por la ayuda.