Avatar ·

Cómo probar correctamente funciones asíncronas con Tokio en Rust

¡Hola! Empecé a estudiar Rust y Tokio para programación asíncrona. Escribí un módulo simple para trabajar con la red, pero no entiendo cómo escribir pruebas para funciones asíncronas. Aquí hay un ejemplo de mi código: ```rust use tokio::time::{sleep, Duration}; pub async fn fetch_data(url: &str) -> Result { // Simulación de una solicitud de red sleep(Duration::from_millis(100)).await; if url.is_empty() { return Err("URL vacía".to_string()); } Ok(format!("Datos desde {}", url)) } #[cfg(test)] mod tests { use super::*; #[test] fn test_fetch_data() { let result = fetch_data("https://example.com"); // Aquí hay un error de compilación } } ``` Cuando intento ejecutar la prueba, el compilador muestra un error: `the trait bound '(): futures::Future' is not satisfied`. Entiendo que las funciones asíncronas devuelven un Future, y necesito ejecutarlo de alguna manera, pero no sé cómo. Intenté agregar `await` en la prueba, pero entonces la prueba misma debe ser asíncrona. Rust