rustup vs asdf: gerenciando toolchains do Rust
O rustup é o gerenciador oficial de toolchains do Rust com components, targets e channels; o asdf gerencia o Rust como uma de muitas linguagens via um plugin.
O rustup é a forma canônica de instalar o Rust, lidando com os channels stable/beta/nightly, targets de compilação cruzada e components como clippy e rustfmt, tudo guiado pelo rust-toolchain.toml. O asdf pode instalar o Rust por meio de um plugin e fixá-lo em .tool-versions junto de outras linguagens, mas não substitui o rico gerenciamento de components e targets do rustup. Para profundidade em Rust, o rustup é essencial; o asdf serve para unificar versões em um repositório poliglota.
| rustup | asdf | |
|---|---|---|
| Escopo | Toolchains do Rust | Poliglota |
| Channels | stable/beta/nightly | Versões fixadas |
| Targets / components | Nativo | Limitado |
| Config | rust-toolchain.toml | .tool-versions |
| Melhor para | Trabalho Rust de verdade | Fixações unificadas multilinguagem |
No CI
Qualquer CI Rust sério usa o rustup para channels, targets e components; o asdf sozinho não consegue fazer compilação cruzada nem adicionar o clippy de forma limpa. Equipes costumam fixar a versão do Rust em .tool-versions para paridade, mas ainda dependem do rustup por baixo dos panos. A resposta prática é rustup para o Rust, com o asdf opcionalmente coordenando versões entre linguagens.
Acelere
Faça cache do registry do cargo, do git e dos diretórios de target com a chave baseada em Cargo.lock. Ambos rodam em runners de CI; runners gerenciados mais rápidos encurtam as etapas de instalação e compilação do Rust.
O veredito
Fazer desenvolvimento Rust de verdade com channels, targets ou components: rustup, que o asdf não consegue substituir totalmente. Coordenar uma versão do Rust entre muitas linguagens em um repositório poliglota: o asdf pode fixá-la, mas o rustup ainda faz o trabalho pesado. Use o rustup para o Rust; adicione o asdf apenas para consistência entre linguagens.