Avatar ·

Como testar corretamente funções assíncronas com Tokio em Rust?

Olá! Comecei a estudar Rust e Tokio para programação assíncrona. Escrevi um módulo simples para trabalhar com rede, mas não consigo entender como escrever testes para funções assíncronas. Aqui está um exemplo do meu código: ```rust use tokio::time::{sleep, Duration}; pub async fn fetch_data(url: &str) -> Result { // Simulação de requisição de rede sleep(Duration::from_millis(100)).await; if url.is_empty() { return Err("URL vazia".to_string()); } Ok(format!("Dados de {}", url)) } #[cfg(test)] mod tests { use super::*; #[test] fn test_fetch_data() { let result = fetch_data("https://example.com"); // Aqui ocorre erro de compilação } } ``` Quando tento executar o teste, o compilador retorna o erro: `the trait bound '(): futures::Future' is not satisfied`. Entendo que funções assíncronas retornam um Future, e precisam ser executadas de alguma forma, mas não sei como. Tentei adicionar `await` no teste, mas então é necessário tornar