Busca & Regex
Buscas rápidas mantêm bases de código Rust navegáveis. ripgrep (rg) respeita .gitignore, fd encontra caminhos, e sed/awk manipulam logs de build e exportações CSV.
Receita
rg "AppError" src/
rg -t rust "unwrap\(" --glob '!tests/**'
fd '\.rs$' src/
rg -l "sqlx::query" | xargs wc -lQuando usar isso:
- Encontrar todos os usos antes de refatorar
- Auditar
unwrapouunsafeem caminhos de produção - Localizar TODOs obsoletos antes do lançamento
Exemplo de Trabalho
# Encontrar variantes de enum e blocos impl
rg "enum AppError" -A 20 src/
# Arquivos importando axum mas não no módulo router
rg -l "use axum" src/ | rg -v routes
# Contar linhas por módulo
fd . src -e rs | xargs wc -l | sort -n
# Transformar trecho de log de CI
sed -n '/error\[E/,+3p' ci.logO que isso demonstra:
-t rustfiltra tipos de arquivo--globexclui árvores de teste- Pipelines combinam
rg,fdewc
Mergulho Profundo
Flags do ripgrep
| Flag | Uso |
|---|---|
-F | String fixa (sem regex) |
-w | Palavra inteira |
-C 3 | Linhas de contexto |
--stats | Contagens de correspondência e tempo |
-z | Busca em .tar etc. |
vs busca de IDE
A busca na CLI é scriptável em CI (ex: falhar se todo!() em src/ fora de testes).
Armadilhas
grep -rinclui target/ - lento e barulhento. Correção: usergou--exclude-dir=target.- Caracteres especiais de regex -
.corresponde a qualquer caractere. Correção:rg -Fpara strings literais. - Sensibilidade a maiúsculas/minúsculas - correspondências perdidas. Correção:
-iquando apropriado. - Falsos positivos em binários enormes - raros em repositórios Rust. Correção:
rgpula binários por padrão. - sed in-place no macOS - sintaxe diferente. Correção: documentar GNU sed ou usar
perl -pi.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
git grep | Apenas arquivos rastreados | Precisa de velocidade ciente de ignore |
ast-grep | Busca estrutural em Rust | Busca de texto simples |
| busca de símbolos rust-analyzer | Navegação ciente de tipos | Scripting de CI |
FAQs
rg vs ag?
rg é mais rápido e mais mantido; padrão para equipes Rust.
Buscar membros do workspace?
Execute a partir da raiz do workspace; rg busca todos os crates, a menos que seja escopo com -g.
Relacionado
- regex - regex em Rust
- Ferramentas CLI baseadas em Rust
- Pipes & processamento de texto
- Orientação de base de código
Versões de Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.