rust-async-patterns
Ajuda seu agente a programar tarefas assíncronas em Rust. Ele permite criar aplicações que executam múltiplas operações eficientemente, melhorando o desempenho.
O que ela faz
Esta skill ajuda você a programar em Rust usando código assíncrono (async). Ela ensina como fazer várias coisas acontecerem ao mesmo tempo sem travar seu programa, usando ferramentas como Tokio.
Quando usar
- ✓Quando você está criando programas em Rust que precisam fazer várias coisas ao mesmo tempo.
- ✓Ao construir sistemas de rede que respondem a muitas conexões.
- ✓Para depurar ou otimizar o desempenho do seu código Rust assíncrono.
Exemplo do que pedir para a IA
“Como posso fazer meu programa Rust esperar por duas coisas acontecerem ao mesmo tempo e pegar o resultado da primeira que terminar?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela explica os conceitos básicos de como o código assíncrono funciona em Rust, mostrando como 'tarefas' (tasks) podem rodar em paralelo e como usar 'futuros' (futures) que são computações que podem terminar depois.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill rust-async-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/systems-programming/skills/rust-async-patterns/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões Async em Rust
Padrões de produção para programação async em Rust com o runtime Tokio, incluindo tarefas, canais, streams e tratamento de erros.
Quando Usar Esta Habilidade
- Construindo aplicações async em Rust
- Implementando serviços de rede concorrentes
- Usando Tokio para I/O async
- Tratando erros async corretamente
- Depurando problemas de código async
- Otimizando performance async
Conceitos Principais
1. Modelo de Execução Async
Future (lazy) → poll() → Ready(value) | Pending
↑ ↓
Waker ← Runtime schedules
2. Abstrações Chave
| Conceito | Propósito |
|---|---|
Future |
Computação preguiçosa que pode completar depois |
async fn |
Função que retorna impl Future |
await |
Suspende até que o future complete |
Task |
Future "spawnado" rodando concorrentemente |
Runtime |
Executor que "poll" (verifica) futures |
Início Rápido
# Cargo.toml
[dependencies]
tokio = { version = "1", features = ["full"] }
futures = "0.3"
async-trait = "0.1"
anyhow = "1.0"
tracing = "0.1"
tracing-subscriber = "0.3"
use tokio::time::{sleep, Duration};
use anyhow::Result;
#[tokio::main]
async fn main() -> Result<()> {
// Initialize tracing
tracing_subscriber::fmt::init();
// Async operations
let result = fetch_data("https://api.example.com").await?;
println!("Got: {}", result);
Ok(())
}
async fn fetch_data(url: &str) -> Result<String> {
// Simulated async operation
sleep(Duration::from_millis(100)).await;
Ok(format!("Data from {}", url))
}
Padrões Detalhados e Exemplos Práticos
A documentação detalhada de padrões está em references/details.md. Leia este arquivo quando o nível de navegação acima for insuficiente.
Melhores Práticas
Fazer
- Use
tokio::select!- Para competir entre futures - Prefira canais - Em vez de estado compartilhado, quando possível
- Use
JoinSet- Para gerenciar múltiplas tarefas - Instrumente com tracing - Para depurar código async
- Trate cancelamento - Verifique
CancellationToken
Não Fazer
- Não bloqueie - Nunca use
std::thread::sleepem código async - Não mantenha locks (travas) entre awaits - Causa deadlocks
- Não "spawn" (crie) sem limites - Use semáforos para limites
- Não ignore erros - Propague com
?ou registre - Não esqueça os limites Send - Para futures "spawnados"
Perguntas frequentes
O que é 'async' em Rust?
É uma forma de escrever código que pode fazer outras coisas enquanto espera por algo demorado, como uma resposta da internet, sem travar o programa inteiro.
O que é Tokio?
É uma ferramenta popular em Rust que ajuda a gerenciar e executar código assíncrono de forma eficiente.
O que são 'tasks' em Rust async?
São pedaços de código assíncrono que podem ser executados independentemente e ao mesmo tempo que outros pedaços de código.
Detalhes
Descrição original do autor
Master Rust async programming with Tokio, async traits, error handling, and concurrent patterns. Use when building async Rust applications, implementing concurrent systems, or debugging async code.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4967
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC