Instalando Rust com rustup e conhecendo o cargo
1. O que é o rustup e por que usá-lo
O rustup é o instalador oficial e gerenciador de versões da linguagem Rust. Diferente de instalar pacotes manuais ou binários pré-compilados, o rustup oferece uma experiência unificada e multiplataforma para gerenciar toolchains do Rust.
Vantagens do rustup:
- Instalação multiplataforma: funciona em Linux, macOS e Windows
- Atualizações simplificadas: um único comando para atualizar o Rust inteiro
- Gerenciamento de toolchains: instale e alterne entre versões stable, beta e nightly
- Componentes opcionais: adicione documentação offline, analisadores de código e muito mais
Usar pacotes do sistema (como apt install rustc) geralmente oferece versões desatualizadas. O rustup garante acesso imediato às versões mais recentes do Rust.
2. Instalando o Rust com rustup
No Linux/macOS
Abra o terminal e execute:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Siga as instruções na tela. Normalmente, escolha a opção padrão (1) para instalação completa.
Após a instalação, recarregue o shell:
source "$HOME/.cargo/env"
No Windows
Baixe o executável rustup-init.exe do site oficial (https://rustup.rs) e execute-o. Siga o assistente de instalação.
Verificando a instalação
Confirme que tudo funcionou:
rustc --version
rustup --version
Exemplo de saída esperada:
rustc 1.75.0 (82e1608df 2023-12-21)
rustup 1.26.0 (5af9b9484 2023-04-05)
3. Entendendo as toolchains do Rust
Toolchains são conjuntos completos de ferramentas do Rust (compilador, bibliotecas padrão, etc.) organizados em canais de lançamento:
- stable: versão estável recomendada para produção
- beta: versão de teste para a próxima stable
- nightly: versão diária com funcionalidades experimentais
Alternando entre toolchains
# Ver toolchain padrão atual
rustup default
# Mudar para nightly
rustup default nightly
# Voltar para stable
rustup default stable
Gerenciando toolchains
# Instalar toolchain específica
rustup toolchain install nightly
# Remover toolchain
rustup toolchain remove beta
# Listar toolchains instaladas
rustup toolchain list
4. Mantendo o Rust atualizado
Atualizando o Rust
# Atualiza todas as toolchains instaladas
rustup update
Verificando o estado atual
rustup show
Este comando exibe:
- Toolchain padrão ativa
- Toolchains instaladas
- Versão do Rust em cada toolchain
- Componentes instalados
Removendo completamente o Rust
rustup self uninstall
Isso remove o rustup, todas as toolchains e configurações associadas.
5. Introdução ao Cargo: o gerenciador de pacotes e build system
O Cargo é o sistema de build e gerenciador de pacotes oficial do Rust. Ele acompanha o rustup e já vem instalado por padrão.
Comandos essenciais do Cargo
Criando um novo projeto:
cargo new meu_projeto
cd meu_projeto
Estrutura gerada:
meu_projeto/
├── Cargo.toml
└── src/
└── main.rs
Conteúdo do Cargo.toml:
[package]
name = "meu_projeto"
version = "0.1.0"
edition = "2021"
[dependencies]
Conteúdo do src/main.rs:
fn main() {
println!("Hello, world!");
}
Compilando e executando:
# Compila o projeto
cargo build
# Compila e executa
cargo run
# Verifica se o código compila sem gerar binário
cargo check
6. Gerenciando dependências com Cargo
Adicionando dependências manualmente
Edite o arquivo Cargo.toml e adicione:
[dependencies]
serde = "1.0"
rand = "0.8"
Usando cargo add (recurso moderno)
cargo add serde
cargo add rand --features small_rng
Entendendo o Cargo.lock
O arquivo Cargo.lock é gerado automaticamente e trava as versões exatas das dependências. Isso garante compilações reproduzíveis em diferentes máquinas.
Exemplo de código usando dependências:
use rand::Rng;
fn main() {
let numero_secreto: u8 = rand::thread_rng().gen_range(1..=100);
println!("Número secreto: {}", numero_secreto);
}
7. Compilando e executando projetos Rust
Modos de compilação
# Compilação debug (rápida, sem otimizações)
cargo build
# Saída: target/debug/meu_projeto
# Compilação release (otimizada para produção)
cargo build --release
# Saída: target/release/meu_projeto
Executando testes
Crie um arquivo src/lib.rs com funções de teste:
pub fn soma(a: i32, b: i32) -> i32 {
a + b
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_soma() {
assert_eq!(soma(2, 2), 4);
}
}
Execute os testes:
cargo test
Gerando documentação
# Gera e abre a documentação do projeto e dependências
cargo doc --open
8. Dicas e boas práticas ao usar rustup e Cargo
Configurando o editor de código
Para VS Code, instale a extensão rust-analyzer. Ela fornece:
- Autocomplete inteligente
- Verificação de erros em tempo real
- Navegação entre definições
- Refatoração de código
Formatando código automaticamente
# Formata todo o código do projeto
cargo fmt
Analisando código com Clippy
# Verifica erros comuns e sugestões de melhoria
cargo clippy
Exemplo de saída do Clippy:
warning: you are using `println!` in a test
--> src/lib.rs:9:9
|
9 | println!("Teste executado");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html
Dica extra: workspace com múltiplos projetos
Crie um Cargo.toml na raiz:
[workspace]
members = [
"projeto_a",
"projeto_b",
]
Isso permite gerenciar vários projetos relacionados com um único cargo build.
Referências
- Documentação oficial do rustup — Página oficial com instruções de instalação e guia completo de uso do rustup
- The Cargo Book — Documentação oficial completa sobre o Cargo, incluindo gerenciamento de dependências e configuração de projetos
- Rust Installation Guide — Guia oficial de instalação do Rust com exemplos passo a passo para diferentes sistemas operacionais
- rustup GitHub Repository — Repositório oficial do rustup com código fonte, issues e documentação técnica detalhada
- Rust by Example: Cargo — Tutorial prático sobre o uso do Cargo com exemplos de código, dependências e testes
- Rust Toolchains Explained — Documentação detalhada sobre toolchains, canais de lançamento e como gerenciá-los com rustup
- Cargo Commands Cheat Sheet — Referência rápida dos comandos mais úteis do Cargo para o dia a dia do desenvolvimento Rust