1. Bem-vindos ao Comprehensive Rust 🩀
  2. Conduzindo o Curso
    ❱
    1. Estrutura do Curso
    2. Atalhos de Teclado
    3. TraduçÔes
  3. Usando o Cargo
    ❱
    1. O Ecossistema do Rust
    2. Exemplos de CĂłdigo
    3. Executando o Cargo Localmente
  4. Dia 1: ManhĂŁ
  5. Bem-vindos
  6. OlĂĄ, Mundo
    ❱
    1. O que Ă© Rust?
    2. BenefĂ­cios do Rust
    3. Playground
  7. Tipos e Valores
    ❱
    1. OlĂĄ, Mundo
    2. VariĂĄveis
    3. Valores
    4. Aritimética
    5. InferĂȘncia de Tipo
    6. ExercĂ­cio: Fibonacci
      ❱
      1. Solução
  8. Fundamentos de Controle de Fluxo
    ❱
    1. ExpressÔes if
    2. Loops
      ❱
      1. for
      2. loop
    3. break e continue
      ❱
      1. RĂłtulos (Labels)
    4. Blocos e Escopos
      ❱
      1. Escopos e Shadowing (Sobreposição)
    5. FunçÔes
    6. Macros
    7. ExercĂ­cio: SequĂȘncia de Collatz
      ❱
      1. Solução
  9. Dia 1: Tarde
  10. Bem-vindos
  11. Tuplas e Matrizes
    ❱
    1. Matrizes
    2. Tuplas
    3. Iterator de Matrizes
    4. PadrÔes e Desestruturação
    5. ExercĂ­cio: Matrizes Aninhadas
      ❱
      1. Solução
  12. ReferĂȘncias
    ❱
    1. ReferĂȘncias Compartilhadas
    2. ReferĂȘncias Exclusivas
    3. Slices: &\[T\]
    4. Strings
    5. ExercĂ­cio: Geometria
      ❱
      1. Solução
  13. Tipos Definidos pelo UsuĂĄrio
    ❱
    1. Structs (Estruturas) Nomeadas
    2. Structs de Tuplas
    3. Enums (EnumeraçÔes)
    4. Static
    5. Const
    6. Aliases (Apelidos) de Tipo
    7. ExercĂ­cio: Eventos de Elevador
      ❱
      1. Solução
  14. Dia 2: ManhĂŁ
  15. Bem-vindos
  16. CorrespondĂȘncia de PadrĂ”es
    ❱
    1. Correspondendo Valores
    2. Desestruturando Structs
    3. Desestruturando Enums
    4. Controle de Fluxo Let
    5. Exercício: Avaliação de ExpressÔes
      ❱
      1. Solução
  17. MĂ©todos e Traits
    ❱
    1. MĂ©todos
    2. Traits
      ❱
      1. Implementando Traits
      2. Supertraits
      3. Tipos Associados
    3. Derivando
    4. Exercício: Logger Genérico
      ❱
      1. Solução
  18. Dia 2: Tarde
  19. Bem-vindos
  20. Genéricos (Generics)
    ❱
    1. FunçÔes Genéricas
    2. Tipos de Dados Genéricos
    3. Traits Genéricos
    4. Trait Bounds (Limites de Trait)
    5. impl Trait
    6. dyn Trait
    7. Exercício: min Genérico
      ❱
      1. Solução
  21. Tipos da Biblioteca PadrĂŁo
    ❱
    1. Biblioteca PadrĂŁo
    2. Documentação
    3. Option
    4. Result
    5. String
    6. Vec
    7. HashMap
    8. ExercĂ­cio: Contador
      ❱
      1. Solução
  22. Traits da Biblioteca PadrĂŁo
    ❱
    1. ComparaçÔes
    2. Operadores
    3. From e Into
    4. ConversÔes
    5. Read e Write
    6. Default, sintaxe de atualização de struct
    7. Closures
    8. ExercĂ­cio: ROT13
      ❱
      1. Solução
  23. Dia 3: ManhĂŁ
  24. Bem-vindos
  25. Gerenciamento de MemĂłria
    ❱
    1. RevisĂŁo da MemĂłria de Programa
    2. Abordagens para Gerenciamento de MemĂłria
    3. Ownership
    4. SemĂąntica de Movimento
    5. Clone
    6. Tipos CopiĂĄveis
    7. Drop
    8. ExercĂ­cio: Tipo Builder
      ❱
      1. Solução
  26. Ponteiros Inteligentes (Smart Pointers)
    ❱
    1. Box<T>
    2. Rc
    3. Objetos de Trait ProprietĂĄrios
    4. Exercício: Árvore Binåria
      ❱
      1. Solução
  27. Dia 3: Tarde
  28. Bem-vindos
  29. Empréstimo (Borrowing)
    ❱
    1. Emprestando um Valor
    2. Verificação de Empréstimo
    3. Erros de Empréstimo
    4. Mutabilidade Interior
    5. ExercĂ­cio: EstatĂ­sticas de SaĂșde
      ❱
      1. Solução
  30. Tempos de Vida (Lifetimes)
    ❱
    1. AnotaçÔes de Tempo de Vida
    2. ElisĂŁo de Tempo de Vida
    3. Tempos de Vida de Structs
    4. ExercĂ­cio: AnĂĄlise de Protobuf
      ❱
      1. Solução
  31. Dia 4: ManhĂŁ
  32. Bem-vindos
  33. Iteradores
    ❱
    1. Iterator
    2. IntoIterator
    3. FromIterator
    4. ExercĂ­cio: Encadeamento de MĂ©todos de Iterador
      ❱
      1. Solução
  34. MĂłdulos
    ❱
    1. MĂłdulos
    2. Hierarquia do Sistema de Arquivos
    3. Visibilidade
    4. use, super, self
    5. ExercĂ­cio: MĂłdulos para uma Biblioteca GUI
      ❱
      1. Solução
  35. Testes
    ❱
    1. MĂłdulos de Teste
    2. Outros Tipos de Testes
    3. Lints do Compilador e Clippy
    4. ExercĂ­cio: Algoritmo de Luhn
      ❱
      1. Solução
  36. Dia 4: Tarde
  37. Bem-vindos
  38. Tratamento de Erros
    ❱
    1. PĂąnicos (Panics)
    2. Result
    3. Operador Try
    4. ConversÔes Try
    5. Trait Error
    6. thiserror e anyhow
    7. ExercĂ­cio: Reescrevendo com Result
      ❱
      1. Solução
  39. Rust Inseguro (Unsafe)
    ❱
    1. Inseguro (Unsafe)
    2. Desreferenciando Ponteiros Brutos
    3. VariĂĄveis EstĂĄticas MutĂĄveis
    4. UniÔes
    5. FunçÔes Inseguras
    6. Traits Inseguros
    7. ExercĂ­cio: Wrapper FFI
      ❱
      1. Solução
  40. Android
  41. Bem-vindos
  42. Configuração
  43. Regras de Compilação (Build Rules)
    ❱
    1. BinĂĄrios
    2. Bibliotecas
  44. AIDL
    ❱
    1. Tutorial do Serviço de Aniversårio
      ❱
      1. Interface
      2. API de Serviço
      3. Serviço
      4. Servidor
      5. Implantar
      6. Cliente
      7. Alterando API
      8. Atualizando ImplementaçÔes
    2. Tipos AIDL
      ❱
      1. Tipos Primitivos
      2. Tipos de Matriz
      3. Enviando Objetos
      4. Parcelables
      5. Enviando Arquivos
  45. Testes
    ❱
    1. GoogleTest
    2. Mocking
  46. Gerando Registros (Log)
  47. Interoperabilidade
    ❱
    1. Com C
      ❱
      1. Chamando C com Bindgen
      2. Chamando Rust do C
    2. Com C++
      ❱
      1. O MĂłdulo Bridge
      2. Bridge Rust
      3. C++ Gerado
      4. Bridge C++
      5. Tipos Compartilhados
      6. Enums Compartilhados
      7. Tratamento de Erros do Rust
      8. Tratamento de Erros do C++
      9. Tipos Adicionais
      10. Compilando para Android: C++
      11. Compilando para Android: Genrules
      12. Compilando para Android: Rust
    3. Com Java
  48. ExercĂ­cios
  49. Chromium
  50. Bem-vindos
  51. Configuração
  52. Comparando os Ecossistemas do Chromium e do Cargo
  53. PolĂ­tica
  54. Regras de Compilação (Build Rules)
    ❱
    1. CĂłdigo Inseguro (Unsafe)
    2. Dependendo de CĂłdigo Rust do C++ do Chromium
    3. Visual Studio Code
    4. ExercĂ­cio
  55. Testes
    ❱
    1. Biblioteca rust_gtest_interop
    2. Regras GN para Testes em Rust
    3. Macro chromium::import!
    4. ExercĂ­cio
  56. Interoperabilidade com C++
    ❱
    1. Exemplo de Bindings
    2. LimitaçÔes do CXX
    3. Tratamento de Erros do CXX
      ❱
      1. Tratamento de Erros: Exemplo de QR
      2. Tratamento de Erros: Exemplo de PNG
    4. Usando CXX no Chromium
    5. ExercĂ­cio
  57. Adicionando Crates de Terceiros
    ❱
    1. Configurando Cargo.toml
    2. Configurando gnrt_config.toml
    3. Baixando Crates
    4. Gerando Regras de Compilação gn
    5. Resolvendo Problemas
      ❱
      1. Scripts de Compilação que Geram Código
      2. Scripts de Compilação que Compilam C++ ou Tomam AçÔes Arbitrårias
    6. Dependendo de um Crate
    7. RevisÔes e Auditorias
    8. Submetendo ao CĂłdigo Fonte do Chromium
    9. Mantendo Crates Atualizados
    10. ExercĂ­cio
  58. Juntando Tudo - ExercĂ­cio
  59. SoluçÔes dos Exercícios
  60. Bare Metal: ManhĂŁ
  61. Bem-vindos
  62. no_std
    ❱
    1. Um Pequeno Exemplo
    2. alloc
  63. Microcontroladores
    ❱
    1. MMIO Bruto
    2. PACs
    3. Crates HAL
    4. Crates de Suporte Ă  Placa
    5. O PadrĂŁo de Estado de Tipo
    6. embedded-hal
    7. probe-rs e cargo-embed
      ❱
      1. Depuração
    8. Outros Projetos
  64. ExercĂ­cios
    ❱
    1. BĂșssola
    2. SoluçÔes
  65. Bare Metal: Tarde
  66. Processadores de Aplicação
    ❱
    1. Preparando-se para o Rust
    2. Assembly In-line
    3. MMIO
    4. Vamos Escrever um Driver UART
      ❱
      1. Mais Traits
    5. Um Driver UART Melhor
      ❱
      1. Bitflags
      2. Registradores MĂșltiplos
      3. Driver
      4. Usando-o
    6. Gerando Registros (Log)
      ❱
      1. Usando-o
    7. ExceçÔes
    8. Outros Projetos
  67. Crates Úteis
    ❱
    1. zerocopy
    2. aarch64-paging
    3. buddy_system_allocator
    4. tinyvec
    5. spin
  68. Android
    ❱
    1. vmbase
  69. ExercĂ­cios
    ❱
    1. Driver RTC
    2. SoluçÔes
  70. ConcorrĂȘncia: ManhĂŁ
  71. Bem-vindos
  72. Threads
    ❱
    1. Threads Simples
    2. Threads com Escopo
  73. Canais (Channels)
    ❱
    1. Transmissores e Receptores
    2. Canais Ilimitados
    3. Canais Delimitados
  74. Send e Sync
    ❱
    1. Traits Marker
    2. Send
    3. Sync
    4. Exemplos
  75. Estado Compartilhado
    ❱
    1. Arc
    2. Mutex
    3. Exemplo
  76. ExercĂ­cios
    ❱
    1. Jantar dos FilĂłsofos
    2. Verificador de Links Multi-Threads
    3. SoluçÔes
  77. ConcorrĂȘncia: Tarde
  78. Bem-vindos
  79. Fundamentos de Async (Assincronicidade)
    ❱
    1. async/await
    2. Futures
    3. Tempos de Execução
      ❱
      1. Tokio
    4. Tarefas
  80. Canais e Controle de Fluxo
    ❱
    1. Canais AssĂ­ncronos
    2. Join
    3. Select
  81. Armadilhas
    ❱
    1. Bloqueando o Executor
    2. Pin
    3. Traits AssĂ­ncronos
    4. Cancelamento
  82. ExercĂ­cios
    ❱
    1. Jantar dos FilĂłsofos
    2. Apliação de Chat de Transmissão
    3. SoluçÔes
  83. Palavras Finais
  84. Obrigado!
  85. GlossĂĄrio
  86. Outros recursos
  87. Créditos