Boas Práticas do Cargo
Fluxos de trabalho do Cargo reproduzíveis, rápidos e bem organizados mantêm as equipes Rust entregando sem surpresas de dependência ou loops de feedback lentos.
Busque em todas as páginas da documentação
Fluxos de trabalho do Cargo reproduzíveis, rápidos e bem organizados mantêm as equipes Rust entregando sem surpresas de dependência ou loops de feedback lentos.
Cargo.toml, build.rs, perfis).Cargo.lock; bibliotecas documentam a política de lock. CI e deploys reproduzíveis para serviços.[workspace.dependencies] compartilhado.crates/ para monorepos em crescimento. Limites claros entre API, domínio e CLI.edition = "2024" e rust-version consistentemente. MSRV documentado no README e na CI.target/ e artefatos fora do git. Use .gitignore e cache de camadas Docker em vez disso.[workspace.dependencies] uma vez. Membros usam workspace = true para evitar derivação.default-features ao otimizar o tempo de compilação. Opte explicitamente por crate.cargo audit (ou cargo deny) periodicamente. Avisos de segurança detectados precocemente.cargo tree -d após grandes atualizações. Duplicatas de versões principais inflacionam o tempo de compilação.rev fixado. Branches flutuantes quebram a reprodutibilidade.--no-default-features e --all-features na CI. Caminhos de código opcionais não se deterioram.lto = "thin" e codegen-units ajustados. Meça antes de LTO pesado na CI.cargo build --features ....release-fast) para iteração de performance local. Não enfraqueça o perfil de produção.build.rs lista rerun-if-changed para todas as entradas. Sem codegen obsoleto após edições de proto/config.cargo check / clippy em loops de watch em vez de build completo. Feedback mais rápido para o desenvolvedor.cargo-nextest para workspaces grandes. Melhor paralelismo e relatórios de CI.cargo expand ao depurar proc macros. Combine com Depurando Macros.target/ na CI. sccache ou cache do GitHub Actions para projetos Rust.cargo publish --dry-run antes de cada release. Conteúdo do tarball e metadados validados.license. Licença dupla MIT OU Apache-2.0 é o padrão.all-features quando seguro. package.metadata.docs.rs configurado.cargo fmt --check, cargo clippy --workspace -- -D warnings, cargo test --workspace, opcional cargo audit.
Workspace virtual é aceitável; defina default-members para ergonomia do cargo run.
Divida crates "quentes", reduza features, use linker mold e cacheie dependências na CI.
Sim, na raiz do workspace para aplicações; bibliotecas publicadas no crates.io frequentemente omitem locks de membros, exceto pela política da raiz do workspace que você documenta.
Apenas para codegen, linking nativo ou descoberta de cfg. Não o use para tarefas melhor tratadas por xtask ou scripts de CI.
rust-version no manifesto mais um job cargo +1.97.0 check na matriz de CI.
cargo vendor para ambientes air-gapped ou restritos por política; adiciona sobrecarga de manutenção.
PR de upgrade dedicado com revisão de changelog, cargo test --workspace e possível crate de shim de API.
[patch.crates-io] apenas para forks temporários; remova quando os releases upstream corrigirem.
README com cargo run, flags de feature e variáveis de ambiente; link para .cargo/config.toml se não for o padrão.
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edition 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026