Para quem ama livros: 15% off, com o cupom CDCS2, até 16/06 🎁

Programação Funcional e Concorrente em Rust

Julia Naomi Boeira

*Você terá acesso às futuras atualizações do livro.

Introduçã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.

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter

*Você terá acesso às futuras atualizações do livro.