Configurar VS Code para Rust

Guia completo para configurar VS Code para Rust com rust-analyzer, extensões essenciais, debugging, settings.json e tasks.json otimizados.

O Visual Studio Code é o editor mais popular para desenvolvimento Rust, graças à extensão rust-analyzer que oferece autocompletar, verificação de tipos em tempo real, refatoração e debugging. Neste guia, vamos configurar o VS Code para uma experiência de desenvolvimento Rust de primeira classe.

Pré-requisitos

Antes de configurar o VS Code, certifique-se de ter o Rust instalado. Veja o guia para seu sistema operacional:

O rustup deve estar instalado e funcionando:

rustc --version
cargo --version

Instalar o VS Code

Linux (Ubuntu/Debian)

sudo snap install code --classic
# ou via apt
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update && sudo apt install code

macOS

brew install --cask visual-studio-code

Windows

Baixe em code.visualstudio.com ou via winget:

winget install Microsoft.VisualStudioCode

Extensões Essenciais

rust-analyzer (Obrigatória)

A extensão mais importante para Rust:

code --install-extension rust-lang.rust-analyzer

O rust-analyzer fornece:

  • Autocompletar inteligente com informações de tipo
  • Diagnósticos em tempo real (erros e warnings)
  • Go to definition e Find references
  • Inlay hints (tipos inferidos exibidos inline)
  • Code actions (refatoração automática)
  • Hover com documentação

CodeLLDB (Debugging)

Para debugging integrado:

code --install-extension vadimcn.vscode-lldb

Extensões Recomendadas

# Melhor visualização de erros
code --install-extension usernamehw.errorlens

# Gerenciamento de crates no Cargo.toml
code --install-extension serayuzgur.crates

# TOML syntax highlighting
code --install-extension tamasfe.even-better-toml

# Git integrado (se não usa o built-in)
code --install-extension eamodio.gitlens

Configurar settings.json

Abra as configurações do VS Code (Ctrl+Shift+P > “Open Settings JSON”) e adicione:

{
  // rust-analyzer
  "rust-analyzer.check.command": "clippy",
  "rust-analyzer.cargo.allFeatures": true,
  "rust-analyzer.inlayHints.typeHints.enable": true,
  "rust-analyzer.inlayHints.parameterHints.enable": true,
  "rust-analyzer.inlayHints.chainingHints.enable": true,
  "rust-analyzer.lens.enable": true,
  "rust-analyzer.lens.run.enable": true,
  "rust-analyzer.lens.debug.enable": true,
  "rust-analyzer.procMacro.enable": true,

  // Formatação automática ao salvar
  "[rust]": {
    "editor.defaultFormatter": "rust-lang.rust-analyzer",
    "editor.formatOnSave": true,
    "editor.rulers": [100]
  },

  // Terminal integrado
  "terminal.integrated.defaultProfile.linux": "bash",

  // Editor
  "editor.inlineSuggest.enabled": true,
  "editor.bracketPairColorization.enabled": true,
  "editor.guides.bracketPairs": "active"
}

Usar Clippy em Vez de Check

A configuração "rust-analyzer.check.command": "clippy" faz o rust-analyzer executar clippy em vez de cargo check, mostrando sugestões de linting diretamente no editor.

Configurar Debugging

launch.json

Crie .vscode/launch.json no seu projeto:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug executável",
      "cargo": {
        "args": ["build", "--bin=meu-app", "--package=meu-app"],
        "filter": {
          "name": "meu-app",
          "kind": "bin"
        }
      },
      "args": [],
      "cwd": "${workspaceFolder}"
    },
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug testes unitários",
      "cargo": {
        "args": ["test", "--no-run", "--bin=meu-app", "--package=meu-app"],
        "filter": {
          "name": "meu-app",
          "kind": "bin"
        }
      },
      "args": [],
      "cwd": "${workspaceFolder}"
    }
  ]
}

Usar o Debugger

  1. Coloque um breakpoint clicando na margem esquerda do editor
  2. Pressione F5 ou clique em Run > Start Debugging
  3. Use a barra de debug para step over, step into, continue, etc.
  4. Inspecione variáveis no painel Variables

Configurar tasks.json

Crie .vscode/tasks.json para atalhos de build:

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "cargo",
      "command": "build",
      "problemMatcher": ["$rustc"],
      "group": "build",
      "label": "cargo build"
    },
    {
      "type": "cargo",
      "command": "run",
      "problemMatcher": ["$rustc"],
      "label": "cargo run"
    },
    {
      "type": "cargo",
      "command": "test",
      "problemMatcher": ["$rustc"],
      "group": "test",
      "label": "cargo test"
    },
    {
      "type": "cargo",
      "command": "clippy",
      "problemMatcher": ["$rustc"],
      "label": "cargo clippy"
    },
    {
      "type": "shell",
      "command": "cargo watch -x run",
      "label": "cargo watch",
      "isBackground": true,
      "problemMatcher": []
    }
  ]
}

Use Ctrl+Shift+B para executar o build padrão ou Ctrl+Shift+P > “Run Task” para ver todas as tarefas.

Atalhos Úteis

AtalhoAção
F12Ir para definição
Ctrl+ClickIr para definição
Shift+F12Encontrar referências
F2Renomear símbolo
Ctrl+.Code actions (quick fix)
Ctrl+SpaceAutocompletar
Ctrl+Shift+PPaleta de comandos
F5Iniciar debugging

Workspace com Múltiplos Crates

Para projetos com workspaces do Cargo, o rust-analyzer já suporta nativamente. Adicione ao settings.json:

{
  "rust-analyzer.linkedProjects": [
    "./Cargo.toml"
  ],
  "rust-analyzer.cargo.allTargets": true
}

Solução de Problemas

rust-analyzer não inicia ou mostra erros

Verifique se o Rust está instalado corretamente:

which rust-analyzer
rustup component add rust-analyzer

No VS Code, abra Output (Ctrl+Shift+U) e selecione “rust-analyzer” para ver logs de erro.

Autocompletar lento em projetos grandes

Adicione ao settings.json:

{
  "rust-analyzer.cargo.buildScripts.enable": true,
  "rust-analyzer.files.excludeDirs": ["target", "node_modules", ".git"]
}

IntelliSense não funciona para macros procedurais

Habilite o suporte a proc macros:

{
  "rust-analyzer.procMacro.enable": true,
  "rust-analyzer.procMacro.attributes.enable": true
}

Próximos Passos

Com o VS Code configurado para Rust:

Se você também usa VS Code para Go, confira o golang.com.br para dicas de configuração.


Última atualização: 23 de fevereiro de 2026. Para uma alternativa ao VS Code, veja o guia de Neovim para Rust.