O Ecossistema Rust
O ecossistema Rust consiste em várias ferramentas, das quais as principais são:
-
rustc
: o compilador Rust que converte arquivos.rs
em binários e outros formatos intermediários. -
cargo
: o gerenciador de dependências e ferramenta de compilação do Rust. O Cargo sabe como baixar dependências, normalmente hospedadas em https://crates.io, e as passará para orustc
quando compilar o seu projeto. O Cargo também vem com um gerenciador de testes embutido que é utilizado para a execução de testes unitários. -
rustup
: o instalador e atualizador do conjunto de ferramentas do Rust. Esta ferramenta é utilizada para instalar e atualizar orustc
e ocargo
quando novas versões do Rust forem lançadas. Além disso,rustup
também pode baixar a documentação da biblioteca padrão. Você pode ter múltiplas versões do Rust instaladas ao mesmo tempo erustup
permitirá que você alterne entre elas conforme necessário.
Pontos chave:
-
O Rust tem um cronograma de lançamento rápido com um novo lançamento saindo a cada seis semanas. Novos lançamentos mantêm compatibilidade com versões anteriores — além disso, eles habilitam novas funcionalidades.
-
Existem três canais de lançamento: “stable”, “beta” e “nightly”.
-
Novos recursos estão sendo testados em “nightly”, “beta” é o que se torna “stable” a cada seis semanas.
-
Dependências também podem ser resolvidas a partir de registros alternativos, git, pastas, e outros mais.
-
O Rust também tem edições: a edição atual é o Rust 2021. As edições anteriores foram o Rust 2015 e o Rust 2018.
-
As edições podem fazer alterações incompatíveis com versões anteriores da linguagem.
-
Para evitar quebra de código, as edições são opcionais: você seleciona a edição para o seu crate através do arquivo
Cargo.toml
. -
Para evitar a divisão do ecossistema, os compiladores Rust podem misturar código escrito para diferentes edições.
-
Mencione que é muito raro usar o compilador diretamente, não através do
cargo
(a maioria dos usuários nunca o faz). -
Pode valer a pena mencionar que o próprio Cargo é uma ferramenta extremamente poderosa e abrangente. Ele é capaz de muitos recursos avançados, incluindo, entre outros:
- Estrutura do projeto/pacote
- Espaços de trabalho
- Dependências de desenvolvimento e gerenciamento/cache de dependência de tempo de execução
- Criar scripts
- Instalação global
- Também é extensível com plugins de sub-comando (tais como cargo clippy).
-
Leia mais no Livro Oficial do Cargo
-