Programação Funcional e Concorrente em Rust
Julia Naomi BoeiraIntrodução
Este livro apresenta Rust de forma que a Programação Funcional seja inerente ao desenvolvimento, assim como identifica uma das grandes forças do Rust, a concorrência. Para isso, o livro foi dividido em quatro partes.
Na primeira, temos um resumo do potencial do Rust e sua história. Passaremos por uma explicação de por que Rust deve ser considerado uma ótima opção, bem como por suas principais características, e apresentaremos um breve módulo de como pode ser feito TDD em Rust. Na segunda, mostramos a Programação Funcional na perspectiva dessa linguagem, comparando ao Clojure. Nosso foco será principalmente em funções, traits, iterators, adapters e consumers.
Na terceira parte, apresentamos 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. Então, na última parte, resumimos as outras, de forma a apresentar 4 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).
Para quem é este livro
Este livro tem como objetivo usar Rust para desenvolver o pensamento funcional e concorrente em qualquer pessoa que goste de programação. Logo, é recomendado ter um básico conhecimento nessa linguagem, pois muitas das implementações de código esperam um conhecimento raso dela.
Outros aspectos importantes da escolha de Rust foram a paixão da autora pela linguagem, já que lhe poupou muitas dores de cabeça por não ter mais de se preocupar em implementar sistemas concorrentes em C++, e a facilidade da sintaxe, que tem uma sensação de linguagem de alto nível.
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
Dados do produto
- Número de páginas:
- 276
- ISBN:
- 978-85-94188-42-7
- Data publicação:
- 03/2018. Atualizado em 02/2021.