Aprendendo Rust
Aprendendo Rust
Resumo:
Introdução
O livro «Learning Rust» (em português — «Aprendendo Rust»), escrito por Paul Johnson e Vesa Kaihlavirta e publicado em 2017 pela editora Packt Publishing, é um dos primeiros guias práticos sobre a linguagem Rust nos mercados de língua portuguesa e inglesa. Em 350 páginas, os autores tentam conduzir o leitor desde os fundamentos da sintaxe até a criação de aplicações reais, com ênfase especial na segurança de memória e concorrência — os principais diferenciais do Rust. Para o site educacional PythonLib, voltado a um público amplo de desenvolvedores, este livro é interessante como exemplo de transição de linguagens de alto nível (Python, JavaScript) para programação de sistemas sem perda de desempenho e com garantias de segurança.
Sobre o que é o livro
«Learning Rust» é estruturado como uma introdução sequencial ao ecossistema Rust. Os primeiros capítulos são dedicados à instalação de ferramentas, sintaxe básica, sistema de ownership (propriedade), borrowing (empréstimo) e lifetimes (tempos de vida). Em seguida, os autores abordam tópicos mais complexos: programação genérica (generics), traits (tipos de comportamento), tratamento de erros, sistema de módulos e testes. Capítulos separados cobrem trabalho com coleções, entrada e saída, macros e FFI (Foreign Function Interface). O livro termina com a criação de uma pequena aplicação web usando o framework Iron (agora obsoleto) e exemplos de programação assíncrona.
Para quem é este livro
O livro é voltado para desenvolvedores que já têm experiência em programação com C, C++, Python ou Java. Iniciantes em programação terão dificuldade: os autores não explicam conceitos básicos (loops, funções, tipos de dados) do zero, mas vão direto às particularidades do Rust. No entanto, para quem deseja aprender programação de sistemas com abordagens modernas de segurança, é um excelente ponto de partida.
O que o leitor aprenderá
- Fundamentos da sintaxe Rust: variáveis, funções, estruturas de controle, ownership e borrowing.
- Sistema de tipos: generics, traits, despacho estático, lifetimes.
- Gerenciamento de memória: princípios de ownership, borrowing e lifetimes sem coletor de lixo.
- Tratamento de erros: uso de
ResulteOption, operador?. - Modularidade e testes: organização de código, testes unitários, testes de documentação.
- Concorrência: threads, canais, mutexes, compartilhamento seguro de estado.
- Macros: macros declarativas e procedurais.
- Interação com C: FFI, chamada de funções C a partir do Rust e vice-versa.
- Criação de aplicação web: fundamentos de HTTP, roteamento, templates.
Pontos fortes
Uma das principais vantagens do livro é sua abordagem prática. Cada capítulo contém exemplos de código que podem ser executados imediatamente e exercícios para fixação do conteúdo. Os autores dedicam muita atenção à explicação do sistema de ownership — o conceito mais difícil para iniciantes — usando diagramas ilustrativos e analogias. Também vale destacar o capítulo sobre FFI, raro em cursos introdutórios, mas extremamente útil para programadores de sistemas. O livro é escrito em linguagem clara, sem academicismo excessivo, o que facilita a compreensão.
Desvantagens
A principal desvantagem é a idade do livro. Rust está em desenvolvimento ativo e, desde 2017, a linguagem passou por mudanças significativas: o framework Iron tornou-se obsoleto, novos recursos surgiram (por exemplo, async/await, muitas bibliotecas foram estabilizadas). Alguns exemplos podem não compilar na versão moderna do compilador. Além disso, o livro não aborda tópicos importantes como async/await, WebAssembly, programação embarcada (embedded) e trabalho com crates populares (por exemplo, serde, tokio). Para iniciantes, a primeira
Recommendations
Kotlin Profissional: técnicas avançadas
Programação Funcional em Kotlin: do básico às técnicas avançadas
Arquitetura de aplicativos Swift (iOS/macOS)
Kotlin e Docker: conteinerização de aplicações
Flask Web Development: desenvolvimento de aplicações web com Flask
Java Puzzlers: Enigmas, Quebra-Cabeças e Armadilhas da Linguagem Java