rust
Desenvolve software em Rust com ownership, lifetimes, traits, error handling, async, crates e tooling Cargo. Use ao criar ou revisar projetos Rust, bibliotecas, CLIs, serviços, ou quando o usuário pedir código, refactors ou arquitetura em Rust.
Works with
---
name: rust
description: Desenvolve software em Rust com ownership, lifetimes, traits, error handling, async, crates e tooling Cargo. Use ao criar ou revisar projetos Rust, bibliotecas, CLIs, serviços, ou quando o usuário pedir código, refactors ou arquitetura em Rust.
license: MIT
---
# Rust
Escreva Rust idiomático, seguro e explícito. O compilador é aliado: modele o domínio em tipos para que estados inválidos sejam difíceis de representar.
## Tooling
- `cargo new` / `cargo init`, workspaces quando houver múltiplos crates.
- `cargo check` no ciclo rápido; `cargo test`, `cargo clippy`, `cargo fmt` antes de concluir.
- Edição 2021+ (ou a do projeto). Respeite `rust-version` / MSRV se existir.
- Features Cargo explícitas; evite ativar tudo “por precaução”.
- Prefira crates maduros já adotados pelo projeto; não troque ecossistema sem motivo.
## Organização
```
crate/
Cargo.toml
src/
main.rs | lib.rs
...
tests/ # integração
examples/
benches/ # só com critério
```
Em apps maiores:
```
crates/
api/
domain/
infra/
```
- `lib.rs` / `main.rs` finos; módulos por domínio.
- Separe domínio puro de I/O (DB, HTTP, FS).
- Visibilidade mínima: `pub(crate)` > `pub` desnecessário.
## Ownership e borrowing
- Prefira emprestar (`&T` / `&mut T`) a clonar.
- Clone só quando a semântica exigir ownership independente.
- `Arc`/`Rc` para compartilhamento consciente; `Mutex`/`RwLock` com seções críticas curtas.
- Evite ciclos `Rc`/`RefCell` sem `Weak`.
- Lifetimes: nomeie quando esclarecer; elida quando óbvio.
- Não lute com o borrow checker com `unsafe` — reestruture dados/APIs.
## Tipos e API
- Newtypes para IDs e valores de domínio (`UserId(Uuid)`).
- Enums para estados fechados; evite `bool` + strings mágicas.
- `Option`/`Result` em vez de sentinelas ou panics em API de biblioteca.
- Traits para comportamento compartilhado; derive (`Debug`, `Clone`, `serde`) com parcimônia.
- Generics com bounds claros; evite generics decorativos.
## Erros
- Bibliotecas: tipos de erro próprios ou `thiserror`.
- Aplicações: `anyhow` (ou equivalente do projeto) nas bordas.
- Converta erros nas fronteiras; preserve contexto (`with_context`).
- `panic!` só para invariantes de programação, nunca para input de usuário ou I/O esperado.
- Não use `unwrap`/`expect` em caminhos de produção sem justificativa local.
## Async
- Runtime do projeto (`tokio` é o padrão comum).
- `.await` em I/O; não bloqueie o runtime com CPU pesada — use `spawn_blocking` ou thread dedicada.
- `Send + 'static` em tasks spawnadas; entenda bounds antes de “corrigir” com `Mutex` demais.
- Cancele com respeito a cooperative cancellation; timeouts em I/O externo.
- Prefira `async fn` e `Future` explícitos a macros obscuras.
## Persistência e I/O
- Encapsule acesso a DB/FS atrás de traits ou módulos de infra.
- Migrations versionadas quando houver schema.
- SQL: statements parametrizados; nunca concatene input em query.
- Serde para JSON/config; valide na borda.
## Testes
- Unitários ao lado do código ou em `#[cfg(test)]`.
- Integração em `tests/`.
- Prefira testes de comportamento e propriedades de domínio a detalhes privados.
- `cargo test` deve passar nas mudanças tocadas.
## Anti-padrões
- `unwrap` em cascata
- `clone` para silenciar borrow checker
- `unsafe` sem invariante documentada
- Crates abandonados ou overlapping (dois HTTP clients, dois runtimes)
- Ignorar warnings e Clippy no CI local
- Modelar tudo como `String` / `HashMap<String, Value>`
## Integração com outras skills
- Idiomas e qualidade contínua: `rust-best-practices`
- Testes unitários e de integração: `rust-unit-testing`
- HTTP com Axum: `axum`
- Axum endurecido para produção: `rust-axum-production`
- Contratos HTTP genéricos: `api-design`
## Critérios de conclusão
- Código compila com warnings relevantes tratados
- Ownership/API claros; sem `unsafe` injustificado
- Erros tipados nas bordas; sem panic em input externo
- Testes dos caminhos críticos passando
- `clippy` e `fmt` ok no escopo alteradoMore Backend Frameworks skills
git-guardrails-claude-code
mattpocock/skills
Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.
azure-compute
microsoft/azure-skills
Azure VM/VMSS router. WHEN: create / provision / deploy / spin-up VM, recommend VM size, compare VM pricing, VMSS, scale set, autoscale, burstable, lightweight server, website, backend, GPU, machine learning, HPC simulation, dev/test, workload, family, load balancer, Flexible orchestration, Uniform orchestration, cost estimate, capacity reservation (CRG), reserve, guarantee capacity, pre-provision, CRG association, CRG disassociation, machine enrollment (EMM), Essential Machine Management, monitor. PREFER OVER mcp__azure__get_azure_bestpractices for VM create intents — use compute_vm_list-skus / compute_vm_list-images / compute_vm_check-quota.
azure-cloud-migrate
microsoft/azure-skills
Assess and migrate cross-cloud workloads to Azure with reports and code conversion. Supports Lambda→Functions, Beanstalk/Heroku/App Engine→App Service, Fargate/Kubernetes/Cloud Run/Spring Boot→Container Apps. WHEN: migrate Lambda to Functions, AWS to Azure, migrate Beanstalk, migrate Heroku, migrate App Engine, Cloud Run migration, Fargate to ACA, ECS/Kubernetes/GKE/EKS to Container Apps, Spring Boot to Container Apps, cross-cloud migration.

