Programação Funcional e Concorrente em Rust
Julia Naomi BoeiraConteúdo
Rust é uma linguagem de nível de sistema com algumas características que são grandes diferenciais, como ter segurança de memória sem coletor de lixo, possibilitar concorrência sem corrida de dados, abstração sem overhead e um compilador que garante segurança no alocamento de recursos. Com Rust, pensar em Programação Funcional será algo muito intuitivo no desenvolvimento.
Neste livro, Julia Naomi traz todo o potencial do Rust, apresentando-o como uma ótima opção às outras linguagens, inclusive as de mais alto nível, sendo até possível implementar TDD. Você verá como Programação Funcional se associa a Rust, em comparação com Clojure, com foco em funções, traits, iterators, adapters e consumers. Além disso, você se aprofundará em sua principal característica, a concorrência, nos diversos modos que o Rust oferece, como a criação de threads, o compartilhamento de estados e a transferência de informações por canais. A autora ainda apresenta quatro frameworks HTTP, sendo dois de alto nível (Iron e Nickel), um de baixo nível (Hyper) e um de programação assíncrona (Tokio), com os quais você já pode colocar a mão na massa.
A edição atualizada em 02/2021 conta com novos capítulos completos de async, incluindo tokio e async_std, além da adição de assincronicidade com sistema de atores baseado no Actix. Todos os códigos foram atualizados para a edição 2018 do Rust.
Sumário
Parte 1 – Por que Rust?
- 1 Introdução ao Rust
- 1.1 História do Rust
- 2 Por que Rust?
- 2.1 Type Safety
- 2.2 Entendimento da linguagem e sua sintaxe
- 2.3 Segurança de memória
- 2.4 Programação concorrente
- 2.5 Mais sobre Rust
- 3 TDD em Rust
- 3.1 Por que TDD?
- 3.2 Um exemplo em Rust
Parte 2 – Programação Funcional
- 4 O que é programação Funcional?
- 4.1 Imutabilidade
- 4.2 Laziness
- 4.3 Funções
- 5 Definindo funções
- 5.1 Funções de ordem superior
- 5.2 Funções anônimas
- 5.3 Funções como valores de retorno
- 6 Traits
- 6.1 Trait bounds
- 6.2 Traits em tipos genéricos
- 6.3 Tópicos especiais em traits
- 7 If let e while let
- 7.1 if let
- 7.2 if let else
- 7.3 while let
- 8 Result e Option
- 8.1 Result
- 8.2 Option
- 8.3 Exemplo
- 9 Iterators, adapters e consumers
- 9.1 Iterators
- 9.2 Maps, filters, folds e tudo mais
- 9.3 Consumer
- 9.4 Mais exemplos com resoluções funcionais
- 9.5 Funções interessantes
Parte 3 – Programação concorrente
- 10 O que é programação concorrente?
- 10.1 Definição de concorrência
- 10.2 E o Rust? Como fica?
- 10.3 Quando utilizar concorrência?
- 11 Threads — A base da programação concorrente
- 11.1 Lançando muitas threads
- 11.2 Panic! at the Thread
- 11.3 Threads seguras
- 12 Estados compartilhados
- 13 Comunicação entre threads
- 13.1 Criando channels MPSC
- 13.2 Como funciona?
- 13.3 Comunicação assíncrona e síncrona
- 14 Assincronicidade em Rust
- 14.1 Async-await
- 14.2 Runtime Tokio
- 14.3 Canais do Tokio
- 14.4 Sincronização de estado
- 15 Atores com Actix
- 15.1 Fazendo um request com Actix
- 15.2 Registrando no banco de dados
- 15.3 Buscando um alias registrado
- 15.4 Gerando um BrCode
Parte 4 – Aplicando nossos conhecimentos
- 16 Consolidando todos os temas com Iron
- 16.1 Iron
- 16.2 Mais detalhes do Iron
- 16.3 Iron testes
- 17 Brincando com Nickel
- 17.1 Routing
- 17.2 Lidando com JSON
- 17.3 Templates em Nickel
- 18 Hyper: servidores desenvolvidos no mais baixo nível
- 18.1 Criando um servidor Hello World mais robusto
- 18.2 Fazendo nosso servidor responder um Post
- 18.3 Uma API GraphQL com Hyper e Juniper
- 19 Tokio para web e a assincronicidade
- 19.1 Tokio-proto e Tokio-core
- 19.2 Futures
- 19.3 A versão assíncrona
- 20 Bibliografia
- 20.1 Links importantes
- 20.2 Exemplos GraphQL
Autor
Julia Naomi Boeira
Julia Naomi Boeira é desenvolvedora de software na Thoughtworks Brasil e possui grande experiência no desenvolvimento de jogos, tendo idealizado o Lean Game Development. Atualmente, atua como divulgadora da engine Unity dentro da Thoughtworks principalmente em realidade aumentada.
Dados do produto
- Número de páginas:
- 276
- ISBN:
- 978-85-94188-42-7
- Data publicação:
- 03/2018. Atualizado em 02/2021.