AnyCompiler

Introdução a Rust

Rust é uma linguagem de programação de sistemas construída em torno de uma ideia central: segurança de memória sem um coletor de lixo. Em vez de rastrear a memória em tempo de execução como Python ou JavaScript fazem, o compilador do Rust verifica o uso de memória do seu código em tempo de compilação, usando um conjunto de regras chamado ownership.

O código Rust compila para um binário nativo antes mesmo de rodar — o compilador (rustc) verifica cada tipo e cada regra de ownership com antecedência. Se o seu código violar qualquer uma delas, nada roda: você recebe um erro de compilação em vez de um crash, um vazamento de memória, ou uma data race.

Por que ownership importa

  • Sem coletor de lixo, sem free() manual — regras de ownership aplicadas em tempo de compilação significam que a memória é limpa automática e deterministicamente, sem a sobrecarga em tempo de execução que um coletor de lixo adiciona
  • Sem dereferenciamento de ponteiros null — Rust não tem null; um valor que pode estar ausente é representado com Option<T>, e o compilador força você a tratar os dois casos
  • Sem data races — o borrow checker garante que dados mutáveis nunca podem ser acessados de dois lugares ao mesmo tempo, um problema que a maioria das linguagens só detecta em tempo de execução, se é que detecta
  • Desempenho equivalente a C e C++ — nenhuma dessas garantias custa nada em tempo de execução; todas são verificadas uma única vez, em tempo de compilação

Uma prévia rápida

Aqui está um programa Rust real, executado de verdade no próprio compilador desta página — não é uma simulação:

fn main() {
    let message: &str = "Hello from Rust!";
    println!("{}", message);
}
Output
Hello from Rust!

É isso — uma variável com um tipo explícito, impressa com println!. A próxima lição executa seu primeiro programa completo e explica exatamente o que está acontecendo.

Practice Exercise

Declare uma variável chamada version do tipo i32 com o valor 5, depois imprima "Rust version:" seguido de version usando println!("Rust version: {}", version).