Prefácio

Não foi sempre tão claro, mas a linguagem de programação Rust é fundamentalmente sobre empoderamento: não importa que tipo de código você está escrevendo agora, Rust te empodera a ir além, a programar com confiança em uma variedade maior de domínios do que você fazia antes.

Considere, por exemplo, um trabalho a nível de sistema que lide com detalhes de baixo nível de gerenciamento de memória, representação de dados, e concorrência. Tradicionalmente, esse domínio da programação é visto como arcano, acessível somente a uns poucos escolhidos que devotaram a os anos necessários para aprender a evitar seus armadilhas infâmes. E mesmo aqueles que o praticam o fazem com cautela, em caso seu código esteja aberto a exploits, quebras, ou corrupção de memória.

Rust quebra essas barreiras ao eliminar as antigas armadilhas e ao prover um conjunto de ferramentas amigáveis, polidas, que te ajudam ao longo do caminho. Programadores que precisem "mergulhar" em controles de baixo nível podem fazê-lo com Rust, sem tomar o risco costumeiro de quebras ou de brechas de segurança, e sem ter que aprender os pontos mais finos de um ferramental instável. Melhor ainda, a linguagem é desenhada para guiá-lo naturalmente em direção a um código que é eficiente em termos de velocidade e uso de memória.

Programadores que já estejam trabalhando com código de baixo nível podem usar Rust para aumentar suas ambições. Por exemplo, introduzir paralelismo em Rust é uma operação relativamente de baixo risco: o compilador irá pegar os erros clássicos para você. E você poderá atacar otimizações mais agressivas no seu código com a confiança de que você não irá introduzir acidentalmente quebras ou exploits de segurança.

Mas Rust não é apenas limitada a programação de baixo nível de sistemas. Ela é expressiva e ergonômica o suficiente para fazer aplicações de linha de comando (CLIs), servidores web, e muitos outros tipos de código bastante prazerosos de escrever — você irá encontrar exemplos simples de ambos mais tarde no livro. Trabalhar com Rust te permite adquirir habilidades que são transferíveis de um domínio a outro. Você pode aprender Rust ao escrever um aplicativo web, e então aplicar as mesmas habilidades para endereçar seu Raspberry Pi.

Este livro abraça totalmente o potencial de Rust de empoderar seus usuários. É um texto amigável e acessível que pretende ajudá-lo a subir de nível não só no seu conhecimento de Rust, mas também no seu alcance e confiança como programador em geral. Então mergulhe de cabeça, prepare-se para aprender — e bem-vindo à comunidade Rust!

— Nicholas Matsakis e Aaron Turon