DevForge

Rust

Linguagem de programação focada em segurança, desempenho e concorrência. Sem coletor de lixo, com garantias de memória em tempo de compilação.

⚡ Instalação automatizada (rustup)

Linux / WSL
curl -fsSL https://rafaelferreira2312.github.io/devforge/scripts/rust/install.sh | bash -s stable
Windows PowerShell (Admin)
Set-ExecutionPolicy Bypass -Scope Process; iex "& { $(irm https://rafaelferreira2312.github.io/devforge/scripts/rust/install.ps1) } stable"
macOS (Homebrew)
curl -fsSL https://rafaelferreira2312.github.io/devforge/scripts/rust/install.sh | bash -s stable

Os scripts instalam o rustup (gerenciador oficial), configuram o toolchain padrão e adicionam ao PATH.

Requisitos mínimos

  • CPU: 2+ núcleos (x86_64 ou ARM64)
  • RAM: 2 GB (recomendado 4 GB para compilações grandes)
  • Armazenamento: 5 GB SSD (cargo cache pode crescer)
  • SO: Ubuntu 20.04+, Debian 11+, RHEL 8+, Windows 10/11, macOS 11+

Hardware recomendado (Dev)

  • Notebook: Dell XPS, MacBook Pro M1/M2, Lenovo ThinkPad
  • CPU: i7 / Ryzen 7 ou superior (compilações pesadas)
  • RAM: 16 GB (32 GB para projetos grandes como compiladores)
  • SSD NVMe 512 GB+

🛠️ Stack recomendada

Ferramentas essenciais

  • Gerenciador: rustup (instalado automaticamente)
  • Build system: Cargo (built-in)
  • Framework web: Axum / Actix-web / Rocket
  • Linter: clippy (built-in)
  • Formatador: rustfmt (built-in)

Extensões VSCode

  • rust-analyzer (oficial)
  • Even Better TOML
  • CodeLLDB (debugger)
  • Crates (gerenciamento de dependências)
  • Rust Test Explorer

Docker (opcional)

docker run -it --rm rust:latest rustc --version

🔧 Troubleshooting (diagnósticos reais)

❌ Erro: "rustc: command not found"

Causa: Rust não instalado ou não está no PATH.
Solução: Verifique com which rustc ou reinstale usando o script DevForge.

⚠️ Erro: "linker 'cc' not found"

Causa: Faltam ferramentas de build (build-essential no Linux ou Visual Studio no Windows).
Solução: No Linux: sudo apt install build-essential. No Windows: Instale Visual Studio C++ Build Tools.

🐘 Erro: "failed to run custom build command for 'openssl-sys'"

Causa: Dependência OpenSSL não instalada.
Solução: No Linux: sudo apt install pkg-config libssl-dev. No macOS: brew install openssl.

⚠️ Cargo build muito lento

Causa: Cache do Cargo ou compilação em modo debug.
Solução: Use cargo build --release para otimizar ou adicione [profile.dev] opt-level = 1 no Cargo.toml.

Diagnóstico automático:

rustc --version && cargo --version && rustup --version && rustup show && echo "---" && which rustc

Este comando verifica: versão do compilador, versão do Cargo, versão do rustup, toolchains instalados e localização do binário.

⚙️ Comandos Cargo úteis

cargo new meu_projeto – cria novo projeto
cargo build – compila o projeto
cargo run – compila e executa
cargo test – executa testes
cargo add nome_da_crate – adiciona dependência
cargo update – atualiza dependências
cargo doc --open – gera documentação

🔧 Componentes e ferramentas extras

rustup component add clippy – linter oficial
rustup component add rustfmt – formatador
rustup component add rust-docs – documentação local
rustup target add wasm32-unknown-unknown – compilar para WebAssembly
cargo install cargo-audit – auditoria de segurança
cargo install cargo-tree – visualiza dependências

⚠️ IMPORTANTE - Como executar os scripts corretamente

Os scripts abaixo funcionam em Windows, Linux e macOS. Siga as instruções específicas do seu sistema:

WINDOWS (PowerShell)
# ERRO COMUM: "arquivo não assinado" ou "execução de scripts desabilitada" # SOLUÇÃO 1: Executar com bypass (recomendado) powershell -ExecutionPolicy Bypass -File "C:\caminho\script.ps1" # SOLUÇÃO 2: Baixar e executar direto (pode ter erro de codificação) powershell -ExecutionPolicy Bypass -Command "iex (irm https://.../script.ps1)" # SOLUÇÃO 3: Habilitar execução permanentemente (como Administrador) Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Se houver erros de acentuação (caracteres estranhos): O script ainda funciona, apenas a saída visual pode ficar distorcida
LINUX / WSL (Bash)
# ERRO COMUM: "permission denied" ou "comando não encontrado" # SOLUÇÃO 1: Dar permissão de execução (obrigatório) chmod +x script.sh # SOLUÇÃO 2: Executar o script ./script.sh # SOLUÇÃO 3: Executar via curl (baixar e executar direto) curl -fsSL https://.../script.sh | bash # SOLUÇÃO 4: Se der erro de permissão, use sudo (cuidado!) sudo chmod +x script.sh && sudo ./script.sh # Se houver erros de permissão: Execute 'ls -la script.sh' para verificar permissões atuais
macOS (Terminal / Zsh)
# ERRO COMUM: "permission denied" ou "operation not permitted" # SOLUÇÃO 1: Dar permissão de execução chmod +x script.sh # SOLUÇÃO 2: Executar o script ./script.sh # SOLUÇÃO 3: Se der erro de "quarentena" (arquivo baixado da internet) xattr -d com.apple.quarantine script.sh # SOLUÇÃO 4: Executar via curl curl -fsSL https://.../script.sh | bash # Se erro persistir: Vá em Preferências do Sistema → Segurança e Privacidade → Permitir execução

Dicas importantes:
Windows: Se aparecerem caracteres estranhos (ex: "�" ou "ção"), ignore - o script funciona normalmente. Para evitar, baixe o script localmente e execute.
Linux/macOS: Sempre use chmod +x antes de executar scripts baixados.
WSL (Windows): Siga as instruções do Linux, mas certifique-se de que o script está dentro do sistema de arquivos do Linux (não no /mnt/c/).

📜 Scripts prontos

Scripts verificados no Ubuntu 22.04/24.04, Debian 12, macOS 13+ e Windows 10/11.

❓ Perguntas frequentes

Qual a diferença entre stable, beta e nightly?

Stable: para a maioria dos projetos. Beta: versão de teste, recursos que serão lançados. Nightly: compilações diárias com recursos experimentais (ex: const generics).

Como gerenciar múltiplas versões do Rust?

Use rustup: rustup toolchain install 1.82 && rustup default 1.82 para alternar.

Rust para WebAssembly (WASM) é viável?

Sim! Rust é uma das melhores opções para WASM. Use wasm-pack e compile com target wasm32-unknown-unknown.

Como reduzir o tempo de compilação?

Use cargo check para verificação rápida, use sccache para cache de compilação ou adicione [profile.dev] opt-level = 0 no Cargo.toml.