Pular para o conteúdo
Skillpedia
Código em geral41 mil · #4967

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

https://github.com/wshobson/agents/blob/main/plugins/systems-programming/skills/rust-async-patterns/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/systems-programming/skills/rust-async-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/systems-programming/skills/rust-async-patterns/SKILL.md -o SKILL.md
Conteú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::sleep em 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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas