Configuração de Editor e rust-analyzer
Configure VS Code (ou Cursor) com rust-analyzer para navegação rápida, expansão de macro e execução de testes em programas Solana/Anchor.
Receita
Card de receita de referência rápida - pronto para copiar e colar.
rustup component add rust-analyzer
code --install-extension rust-lang.rust-analyzerEssenciais em .vscode/settings.json:
{
"rust-analyzer.cargo.extraEnv": {},
"rust-analyzer.check.command": "clippy",
"editor.formatOnSave": true
}Quando usar:
- Jump-to-definition em módulos
#[program]Anchor. - Erros inline antes de ciclos de compile
anchor build. - Renomear contas e instruções com segurança.
- Executar
cargo testpara parsers off-chain ao lado de programas.
Exemplo prático
# Fixe Rust na raiz do repo
cat > rust-toolchain.toml <<'EOF'
[toolchain]
channel = "1.91.1"
components = ["rustfmt", "clippy", "rust-analyzer"]
EOF
rustup show active-toolchain
# Abra workspace Anchor
cd my_anchor_program
code .
# No editor: abra programs/my_program/src/lib.rs
# rust-analyzer deve indexar após "cargo metadata" completarsettings.json do workspace:
{
"rust-analyzer.linkedProjects": ["programs/my_program/Cargo.toml"],
"rust-analyzer.cargo.buildScripts.enable": true,
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
}
}O que isso demonstra:
rust-toolchain.tomlfixa 1.91.1 para paridade analyzer e CLI.linkedProjectsajuda monorepos onde raiz pode não ser crate Rust.buildScripts.enableresolve código gerado por build scriptanchor-syn.
Aprofundamento
Como funciona
- rust-analyzer executa
cargo checkao salvar para feedback rápido. - Macros procedurais (
#[program],#[account]) exigem saída de build script. - Crates off-chain em
tests/ouclients/podem ser membros workspace separados. - Formate com
rustfmtconsistente com CIcargo fmt.
Extensões Recomendadas
| Extensão | Propósito |
|---|---|
| rust-analyzer | LSP para Rust |
| Even Better TOML | Edição Anchor.toml |
| Error Lens | Diagnósticos inline |
| crates | Dicas de versão Cargo.toml |
Notas bash
# Reinicie cache analyzer quando macros quebrarem
rm -rf target/debug/incremental
cargo clean && anchor buildErros comuns
- Analyzer preso em toolchain errada - conflito stable vs 1.91.1 fixado. Correção: commite
rust-toolchain.toml; recarregue janela. - Erros de macro em lib.rs - build scripts não executados. Correção: habilite
buildScripts; executeanchor builduma vez. - Abrir raiz de pasta errada - abra raiz workspace Anchor, não só subpasta
programs/*. Correção: abra raiz repo comAnchor.toml. - Split WSL vs Windows - analyzer em path Windows, cargo em WSL. Correção: abra projeto inteiramente dentro de remote WSL.
- Indexação enorme target/ - IDE lenta. Correção: exclua
target/em configurações file watcher.
Alternativas
| Alternativa | Use quando | Não use quando |
|---|---|---|
| IntelliJ Rust | Loja JetBrains | Padrão VS Code/Cursor |
vim + rust-analyzer | Centrado em terminal | Ensinar novos contratados |
Editor zed | LSP leve | Depuração macro Anchor imatura |
Apenas CLI cargo check | Minimalismo CI | Desenvolvimento diário de features |
FAQs
Por que tipos #[account] não resolvem?
Execute anchor build uma vez para artefatos proc-macro gerarem; garanta linkedProjects apontando para crate de programa.
Devo usar rust-analyzer nightly?
Não - corresponda pin stable 1.91.1 para compatibilidade programa Solana.
Como formatar ao salvar?
Habilite editor.formatOnSave com rust-analyzer como formatador Rust padrão.
rust-analyzer pode executar testes anchor?
Use terminal integrado para anchor test; analyzer foca em velocidade cargo check.
E código client TypeScript?
Use ESLint/serviço linguagem TypeScript em app/ - separado de rust-analyzer.
Como corrigir CPU alta?
Exclua target/, limite membros workspace, desabilite features não usadas em Cargo.toml.
Cursor difere de VS Code?
Mesma extensão rust-analyzer e settings se aplicam.
Como depurar programas on-chain?
Use logs msg! e testes LiteSVM; step-debugging nativo é limitado vs Rust off-chain.
clippy deve rodar no analyzer?
Opcional - check.command: clippy é mais rigoroso mas mais lento que check.
Como compartilhar settings?
Commite .vscode/settings.json e rust-toolchain.toml para consistência do time.
Relacionados
- Gerenciamento de Versão (agave-install / avm) - pin Rust complementa toolchain
- Construindo Programas (cargo build-sbf) - loop compile completo
- Visão Geral da Toolchain - mapa da stack
- Noções Básicas de Testes - fluxo de testes
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.