Introdução ao Rust
O que é Rust?
Seção intitulada “O que é Rust?”Rust é uma linguagem de programação de sistemas, do tipo que você usaria para os mesmos trabalhos que C ou C++: sistemas operacionais, engines de jogos, navegadores, bancos de dados e ferramentas de linha de comando, em que velocidade e controle importam.
O que faz o Rust especial é que ele entrega esse desempenho de baixo nível sem as armadilhas clássicas. Em C, é fácil ler sem querer uma memória que já foi liberada ou causar uma data race (condição de corrida). Em Rust, um código assim normalmente nem compila: o compilador barra você na hora do build.
O Rust começou como um projeto pessoal de Graydon Hoare, que depois o levou para a Mozilla em busca de patrocínio. A versão estável 1.0 saiu em 2015. Hoje ele é mantido pela Rust Foundation e por uma grande comunidade open source.
O problema que o Rust resolve
Seção intitulada “O problema que o Rust resolve”Historicamente, você precisava escolher entre duas opções, cada uma com seu preço:
- Linguagens de baixo nível (C, C++): rápidas e próximas do hardware, mas é você quem gerencia a memória na mão. Erros viram travamentos e falhas de segurança.
- Linguagens de alto nível (Python, Java, Go): seguras e fáceis, mas dependem de um garbage collector (coletor de lixo), o que custa desempenho e previsibilidade.
A grande ideia do Rust é uma terceira opção: ele garante a segurança de memória em tempo de compilação usando um sistema chamado ownership (posse), que você vai aprender mais adiante neste curso. Sem garbage collector e sem free() manual: o compilador descobre sozinho quando uma memória não é mais necessária.
Como o Rust se compara
Seção intitulada “Como o Rust se compara”Um mapa aproximado de onde o Rust fica em relação a linguagens que você talvez conheça:
| Linguagem | Velocidade | Segurança de memória | Garbage collector |
|---|---|---|---|
| C / C++ | Rápida | Manual, sujeita a erros | Não |
| Go | Boa | Segura | Sim |
| Python | Mais lenta | Segura | Sim |
| Rust | Rápida | Segura (verificada na compilação) | Não |
Resumindo: o Rust busca a velocidade do C e a segurança das linguagens de alto nível ao mesmo tempo. Para uma comparação mais detalhada, lado a lado e com código de verdade, veja Rust vs outras linguagens.
Onde o Rust é usado
Seção intitulada “Onde o Rust é usado”Você provavelmente já usa Rust sem saber:
- Firefox: partes do motor de renderização são escritas em Rust
- Cloudflare e Discord: serviços de backend em que desempenho é crítico
- O kernel do Linux: agora aceita drivers escritos em Rust
- Ferramentas de linha de comando: favoritas rápidas como ripgrep,
batefd - WebAssembly: o Rust é uma das principais escolhas para rodar código com velocidade nativa no navegador
Um gostinho
Seção intitulada “Um gostinho”Você ainda não precisa entender cada detalhe. Só repare como o código é fácil de ler:
fn main() { let name = "Rustacean"; println!("Olá, {name}!");}Saída:
Olá, Rustacean!Como é a “segurança” na prática
Seção intitulada “Como é a “segurança” na prática”“Segurança de memória” parece algo abstrato, então vamos a um caso concreto. Digamos que você tem uma lista com três notas e pede a décima, que não existe.
Em C, isso é permitido. O programa lê, sem avisar, o que estiver na memória logo depois da sua lista. Você pode receber um número aleatório, um travamento ou uma falha de segurança, e nada avisa você.
O Rust não deixa isso passar. Se o compilador consegue ver o erro, ele se recusa a compilar o programa:
fn main() { let scores = [90, 85, 77]; println!("{}", scores[9]);}error: this operation will panic at runtime --> src/main.rs:3:20 |3 | println!("{}", scores[9]); | ^^^^^^^^^ index out of bounds: the length is 3 but the index is 9A mensagem (em inglês) diz que essa operação causaria um panic em tempo de execução: o índice está fora dos limites, já que o tamanho é 3 e o índice é 9.
E quando você não tem certeza se um item existe, o Rust oferece um jeito educado de perguntar. O .get() responde “aqui está” ou “não tem nada aqui” (None), em vez de entregar lixo para você:
fn main() { let scores = [90, 85, 77]; println!("primeira nota: {}", scores[0]); println!("décima nota: {:?}", scores.get(9));}Saída:
primeira nota: 90décima nota: NoneNão se preocupe com [...], .get() ou None por enquanto. Você vai aprender isso direitinho em Arrays e Option. O importante agora: toda uma classe de bugs do tipo “ler memória que não devia” é pega antes de o programa rodar ou tratada com segurança enquanto ele roda.
Rust é difícil de aprender?
Seção intitulada “Rust é difícil de aprender?”Resposta sincera: a primeira ou as duas primeiras semanas podem ser frustrantes. Conceitos como ownership e borrowing (empréstimo) são realmente novos, e o compilador vai recusar código que você acha que deveria funcionar. Mas esse atrito é o compilador ensinando você a escrever código mais seguro, e a ficha cai mais rápido do que a maioria das pessoas espera.
Este curso foi feito para suavizar essa curva: passos pequenos, exemplos reais e um botão Experimente você mesmo em tudo.
Prática
Seção intitulada “Prática”1. Cumprimente você mesmo
Seção intitulada “1. Cumprimente você mesmo”Mude o programa de “Um gostinho” para que ele cumprimente você pelo nome, e adicione uma segunda linha que diga Bem-vindo ao Rust!. Dica: cada println! imprime uma linha, então você precisa de dois.
Ver solução
fn main() { let name = "Ana"; println!("Olá, {name}!"); println!("Bem-vindo ao Rust!");}Saída:
Olá, Ana!Bem-vindo ao Rust!2. Um fato sobre o Rust
Seção intitulada “2. Um fato sobre o Rust”Guarde a palavra Rust e o ano 2015 em dois nomes e depois imprima a frase Rust 1.0 foi lançado em 2015. usando os dois. Dica: você pode colocar mais de um {nome} dentro do mesmo println!.
Ver solução
fn main() { let language = "Rust"; let year = 2015; println!("{language} 1.0 foi lançado em {year}.");}Saída:
Rust 1.0 foi lançado em 2015.- Rust é uma linguagem de sistemas rápida e segura: velocidade de C, sem garbage collector.
- Ele evita bugs de memória em tempo de compilação por meio do ownership.
- É usado em navegadores, kernels, serviços na nuvem, ferramentas de linha de comando e WebAssembly.
- A curva de aprendizado existe, mas é curta, e o compilador está do seu lado.
A seguir: instalar o Rust e rodar seu primeiro programa no seu computador.
Teste o que aprendeu
Seção intitulada “Teste o que aprendeu”Teste o que aprendeu
1. Como o Rust consegue segurança de memória sem um garbage collector?
2. De acordo com a tabela de comparação, o que Rust e Go têm em comum?
3. Como as pessoas que programam em Rust se chamam?
Pontuação: 0 / 3
Para saber mais
Seção intitulada “Para saber mais”- Introduction — The Rust Book (em inglês): para quem o livro oficial foi feito e como ele está organizado. É o melhor companheiro gratuito para este curso.
- rust-lang.org: a página oficial, com os argumentos de “Por que Rust?” (desempenho, confiabilidade, produtividade) e histórias de empresas que usam a linguagem.
- Aprenda Rust: a lista oficial de recursos de aprendizado, incluindo o Rust by Example e os exercícios do Rustlings.
- Announcing Rust 1.0 — Rust Blog (em inglês): o post de 2015 que marcou o Rust como estável, e o que essa “estabilidade” promete para o seu código.
- Rust Foundation (em inglês): a organização sem fins lucrativos que apoia o projeto Rust e quem o mantém.