Rust
O que é
Rust é uma linguagem de sistemas compilada com foco em segurança de memória. A maioria das linguagens roda um coletor de lixo (garbage collector) — um limpador automático de memória que trabalha em segundo plano para liberar memória não utilizada. Rust dispensa isso e, em vez disso, prova que sua memória está sendo tratada corretamente enquanto o programa é compilado. Pense em um livro de biblioteca: só uma pessoa pode pegá-lo e escrever nele por vez, e o sistema se recusa a emprestar um livro que já foi devolvido e descartado — assim você nunca acaba usando algo que não existe mais. É isso que o modelo de posse (ownership) e empréstimo (borrowing) do Rust faz com seus dados. Ele garante, antes mesmo do seu programa rodar, que você não vai ter data races (duas partes do código alterando a mesma coisa ao mesmo tempo) ou bugs de use-after-free (usar memória que já foi liberada). O resultado é velocidade no nível de C com muito menos formas de atirar no próprio pé.
Pontos fortes
- Segurança de memória e de threads verificadas durante a compilação do programa, sem precisar de coletor de lixo (o limpador de memória em segundo plano que a maioria das linguagens usa).
- Desempenho equiparável a C e C++.
- Sistema de tipos rico, pattern matching e um gerenciador de pacotes de primeira linha (Cargo, a ferramenta nativa de build e empacotamento do Rust).
- Mensagens de erro do compilador excelentes, que explicam o que deu errado e como corrigir.
Contrapartidas
- Curva de aprendizado íngreme — o borrow checker (a parte do Rust que impõe as regras de "um dono por vez" descritas acima) leva um bom tempo até se acostumar.
- Mais lento para escrever e mais demorado para compilar do que linguagens de mais alto nível.
- Exagero para scripts simples ou protótipos rápidos.
- Código assíncrono em Rust e código genérico carregado de lifetimes podem ficar genuinamente intrincados.
Quando usar
Recorra a Rust quando desempenho, confiabilidade e controle de recursos importam ao mesmo tempo: software de sistemas, engines de jogos, ferramentas de linha de comando, WebAssembly, sistemas embarcados ou serviços críticos em desempenho. É uma escolha ruim para scripts descartáveis, onde as garantias de segurança não compensam o atrito.
Encaixe no vibe coding
Assistentes de IA geram código Rust plausível, mas o borrow checker é o verdadeiro juiz — espere colar erros do compilador de volta e iterar, o que funciona bem porque os diagnósticos do Rust são precisos e o modelo consegue agir sobre eles. Oriente a IA a se apoiar em Result e ? para tratamento de erros, a preferir tipos com posse própria (owned types) ou empréstimos claros em vez de lutar contra lifetimes, e a sugerir crates (os pacotes de código reutilizável do Rust, listados no Cargo.toml) explicitamente. Peça casos de cargo test para que você possa verificar segurança e comportamento. Quando o modelo propuser unsafe, questione e peça primeiro uma alternativa segura.
fn main() {
let nums = vec![3, 1, 4, 1, 5, 9, 2, 6];
let sum: i32 = nums.iter().filter(|&&n| n % 2 == 0).sum();
println!("Sum of evens: {sum}");
}