- Bem-vindos ao Comprehensive Rust đŠ
- 1. Conduzindo o Curso
â±
- 1.1. Estrutura do Curso
- 1.2. Atalhos de Teclado
- 1.3. TraduçÔes
- 2. Usando o Cargo
â±
- 2.1. O Ecossistema do Rust
- 2.2. Exemplos de CĂłdigo
- 2.3. Executando o Cargo Localmente
- Dia 1: ManhĂŁ
- 3. Bem-vindos
- 4. OlĂĄ, Mundo
â±
- 4.1. O que Ă© Rust?
- 4.2. BenefĂcios do Rust
- 4.3. Playground
- 5. Tipos e Valores
â±
- 5.1. OlĂĄ, Mundo
- 5.2. VariĂĄveis
- 5.3. Valores
- 5.4. Aritimética
- 5.5. InferĂȘncia de Tipo
- 5.6. ExercĂcio: Fibonacci
â±
- 5.6.1. Solução
- 6. Fundamentos de Controle de Fluxo
â±
- 6.1. ExpressÔes if
- 6.2. Loops
â±
- 6.2.1. for
- 6.2.2. loop
- 6.3. break e continue
â±
- 6.3.1. RĂłtulos (Labels)
- 6.4. Blocos e Escopos
â±
- 6.4.1. Escopos e Shadowing (Sobreposição)
- 6.5. FunçÔes
- 6.6. Macros
- 6.7. ExercĂcio: SequĂȘncia de Collatz
â±
- 6.7.1. Solução
- Dia 1: Tarde
- 7. Bem-vindos
- 8. Tuplas e Matrizes
â±
- 8.1. Matrizes
- 8.2. Tuplas
- 8.3. Iterator de Matrizes
- 8.4. PadrÔes e Desestruturação
- 8.5. ExercĂcio: Matrizes Aninhadas
â±
- 8.5.1. Solução
- 9. ReferĂȘncias
â±
- 9.1. ReferĂȘncias Compartilhadas
- 9.2. ReferĂȘncias Exclusivas
- 9.3. Slices: &\[T\]
- 9.4. Strings
- 9.5. ExercĂcio: Geometria
â±
- 9.5.1. Solução
- 10. Tipos Definidos pelo UsuĂĄrio
â±
- 10.1. Structs (Estruturas) Nomeadas
- 10.2. Structs de Tuplas
- 10.3. Enums (EnumeraçÔes)
- 10.4. Static
- 10.5. Const
- 10.6. Aliases (Apelidos) de Tipo
- 10.7. ExercĂcio: Eventos de Elevador
â±
- 10.7.1. Solução
- Dia 2: ManhĂŁ
- 11. Bem-vindos
- 12. CorrespondĂȘncia de PadrĂ”es
â±
- 12.1. Correspondendo Valores
- 12.2. Desestruturando Structs
- 12.3. Desestruturando Enums
- 12.4. Controle de Fluxo Let
- 12.5. ExercĂcio: Avaliação de ExpressĂ”es
â±
- 12.5.1. Solução
- 13. MĂ©todos e Traits
â±
- 13.1. MĂ©todos
- 13.2. Traits
â±
- 13.2.1. Implementando Traits
- 13.2.2. Supertraits
- 13.2.3. Tipos Associados
- 13.3. Derivando
- 13.4. ExercĂcio: Logger GenĂ©rico
â±
- 13.4.1. Solução
- Dia 2: Tarde
- 14. Bem-vindos
- 15. Genéricos (Generics)
â±
- 15.1. FunçÔes Genéricas
- 15.2. Tipos de Dados Genéricos
- 15.3. Traits Genéricos
- 15.4. Trait Bounds (Limites de Trait)
- 15.5. impl Trait
- 15.6. dyn Trait
- 15.7. ExercĂcio: min GenĂ©rico
â±
- 15.7.1. Solução
- 16. Tipos da Biblioteca PadrĂŁo
â±
- 16.1. Biblioteca PadrĂŁo
- 16.2. Documentação
- 16.3. Option
- 16.4. Result
- 16.5. String
- 16.6. Vec
- 16.7. HashMap
- 16.8. ExercĂcio: Contador
â±
- 16.8.1. Solução
- 17. Traits da Biblioteca PadrĂŁo
â±
- 17.1. ComparaçÔes
- 17.2. Operadores
- 17.3. From e Into
- 17.4. ConversÔes
- 17.5. Read e Write
- 17.6. Default, sintaxe de atualização de struct
- 17.7. Closures
- 17.8. ExercĂcio: ROT13
â±
- 17.8.1. Solução
- Dia 3: ManhĂŁ
- 18. Bem-vindos
- 19. Gerenciamento de MemĂłria
â±
- 19.1. RevisĂŁo da MemĂłria de Programa
- 19.2. Abordagens para Gerenciamento de MemĂłria
- 19.3. Ownership
- 19.4. SemĂąntica de Movimento
- 19.5. Clone
- 19.6. Tipos CopiĂĄveis
- 19.7. Drop
- 19.8. ExercĂcio: Tipo Builder
â±
- 19.8.1. Solução
- 20. Ponteiros Inteligentes (Smart Pointers)
â±
- 20.1. Box<T>
- 20.2. Rc
- 20.3. Objetos de Trait ProprietĂĄrios
- 20.4. ExercĂcio: Ărvore BinĂĄria
â±
- 20.4.1. Solução
- Dia 3: Tarde
- 21. Bem-vindos
- 22. Empréstimo (Borrowing)
â±
- 22.1. Emprestando um Valor
- 22.2. Verificação de Empréstimo
- 22.3. Erros de Empréstimo
- 22.4. Mutabilidade Interior
- 22.5. ExercĂcio: EstatĂsticas de SaĂșde
â±
- 22.5.1. Solução
- 23. Tempos de Vida (Lifetimes)
â±
- 23.1. AnotaçÔes de Tempo de Vida
- 23.2. ElisĂŁo de Tempo de Vida
- 23.3. Tempos de Vida de Structs
- 23.4. ExercĂcio: AnĂĄlise de Protobuf
â±
- 23.4.1. Solução
- Dia 4: ManhĂŁ
- 24. Bem-vindos
- 25. Iteradores
â±
- 25.1. Iterator
- 25.2. IntoIterator
- 25.3. FromIterator
- 25.4. ExercĂcio: Encadeamento de MĂ©todos de Iterador
â±
- 25.4.1. Solução
- 26. MĂłdulos
â±
- 26.1. MĂłdulos
- 26.2. Hierarquia do Sistema de Arquivos
- 26.3. Visibilidade
- 26.4. use, super, self
- 26.5. ExercĂcio: MĂłdulos para uma Biblioteca GUI
â±
- 26.5.1. Solução
- 27. Testes
â±
- 27.1. MĂłdulos de Teste
- 27.2. Outros Tipos de Testes
- 27.3. Lints do Compilador e Clippy
- 27.4. ExercĂcio: Algoritmo de Luhn
â±
- 27.4.1. Solução
- Dia 4: Tarde
- 28. Bem-vindos
- 29. Tratamento de Erros
â±
- 29.1. PĂąnicos (Panics)
- 29.2. Result
- 29.3. Operador Try
- 29.4. ConversÔes Try
- 29.5. Trait Error
- 29.6. thiserror e anyhow
- 29.7. ExercĂcio: Reescrevendo com Result
â±
- 29.7.1. Solução
- 30. Rust Inseguro (Unsafe)
â±
- 30.1. Inseguro (Unsafe)
- 30.2. Desreferenciando Ponteiros Brutos
- 30.3. VariĂĄveis EstĂĄticas MutĂĄveis
- 30.4. UniÔes
- 30.5. FunçÔes Inseguras
- 30.6. Traits Inseguros
- 30.7. ExercĂcio: Wrapper FFI
â±
- 30.7.1. Solução
- Android
- 31. Bem-vindos
- 32. Configuração
- 33. Regras de Compilação (Build Rules)
â±
- 33.1. BinĂĄrios
- 33.2. Bibliotecas
- 34. AIDL
â±
- 34.1. Tutorial do Serviço de Aniversårio
â±
- 34.1.1. Interface
- 34.1.2. API de Serviço
- 34.1.3. Serviço
- 34.1.4. Servidor
- 34.1.5. Implantar
- 34.1.6. Cliente
- 34.1.7. Alterando API
- 34.1.8. Atualizando ImplementaçÔes
- 34.2. Tipos AIDL
â±
- 34.2.1. Tipos Primitivos
- 34.2.2. Tipos de Matriz
- 34.2.3. Enviando Objetos
- 34.2.4. Parcelables
- 34.2.5. Enviando Arquivos
- 35. Testes
â±
- 35.1. GoogleTest
- 35.2. Mocking
- 36. Gerando Registros (Log)
- 37. Interoperabilidade
â±
- 37.1. Com C
â±
- 37.1.1. Chamando C com Bindgen
- 37.1.2. Chamando Rust do C
- 37.2. Com C++
â±
- 37.2.1. O MĂłdulo Bridge
- 37.2.2. Bridge Rust
- 37.2.3. C++ Gerado
- 37.2.4. Bridge C++
- 37.2.5. Tipos Compartilhados
- 37.2.6. Enums Compartilhados
- 37.2.7. Tratamento de Erros do Rust
- 37.2.8. Tratamento de Erros do C++
- 37.2.9. Tipos Adicionais
- 37.2.10. Compilando para Android: C++
- 37.2.11. Compilando para Android: Genrules
- 37.2.12. Compilando para Android: Rust
- 37.3. Com Java
- 38. ExercĂcios
- Chromium
- 39. Bem-vindos
- 40. Configuração
- 41. Comparando os Ecossistemas do Chromium e do Cargo
- 42. PolĂtica
- 43. Regras de Compilação (Build Rules)
â±
- 43.1. CĂłdigo Inseguro (Unsafe)
- 43.2. Dependendo de CĂłdigo Rust do C++ do Chromium
- 43.3. Visual Studio Code
- 43.4. ExercĂcio
- 44. Testes
â±
- 44.1. Biblioteca rust_gtest_interop
- 44.2. Regras GN para Testes em Rust
- 44.3. Macro chromium::import!
- 44.4. ExercĂcio
- 45. Interoperabilidade com C++
â±
- 45.1. Exemplo de Bindings
- 45.2. LimitaçÔes do CXX
- 45.3. Tratamento de Erros do CXX
â±
- 45.3.1. Tratamento de Erros: Exemplo de QR
- 45.3.2. Tratamento de Erros: Exemplo de PNG
- 45.4. Usando CXX no Chromium
- 45.5. ExercĂcio
- 46. Adicionando Crates de Terceiros
â±
- 46.1. Configurando Cargo.toml
- 46.2. Configurando gnrt_config.toml
- 46.3. Baixando Crates
- 46.4. Gerando Regras de Compilação gn
- 46.5. Resolvendo Problemas
â±
- 46.5.1. Scripts de Compilação que Geram Código
- 46.5.2. Scripts de Compilação que Compilam C++ ou Tomam AçÔes Arbitrårias
- 46.6. Dependendo de um Crate
- 46.7. RevisÔes e Auditorias
- 46.8. Submetendo ao CĂłdigo Fonte do Chromium
- 46.9. Mantendo Crates Atualizados
- 46.10. ExercĂcio
- 47. Juntando Tudo - ExercĂcio
- 48. SoluçÔes dos ExercĂcios
- Bare Metal: ManhĂŁ
- 49. Bem-vindos
- 50. no_std
â±
- 50.1. Um Pequeno Exemplo
- 50.2. alloc
- 51. Microcontroladores
â±
- 51.1. MMIO Bruto
- 51.2. PACs
- 51.3. Crates HAL
- 51.4. Crates de Suporte Ă Placa
- 51.5. O PadrĂŁo de Estado de Tipo
- 51.6. embedded-hal
- 51.7. probe-rs e cargo-embed
â±
- 51.7.1. Depuração
- 51.8. Outros Projetos
- 52. ExercĂcios
â±
- 52.1. BĂșssola
- 52.2. SoluçÔes
- Bare Metal: Tarde
- 53. Processadores de Aplicação
â±
- 53.1. Preparando-se para o Rust
- 53.2. Assembly In-line
- 53.3. MMIO
- 53.4. Vamos Escrever um Driver UART
â±
- 53.4.1. Mais Traits
- 53.5. Um Driver UART Melhor
â±
- 53.5.1. Bitflags
- 53.5.2. Registradores MĂșltiplos
- 53.5.3. Driver
- 53.5.4. Usando-o
- 53.6. Gerando Registros (Log)
â±
- 53.6.1. Usando-o
- 53.7. ExceçÔes
- 53.8. Outros Projetos
- 54. Crates Ăteis
â±
- 54.1. zerocopy
- 54.2. aarch64-paging
- 54.3. buddy_system_allocator
- 54.4. tinyvec
- 54.5. spin
- 55. Android
â±
- 55.1. vmbase
- 56. ExercĂcios
â±
- 56.1. Driver RTC
- 56.2. SoluçÔes
- ConcorrĂȘncia: ManhĂŁ
- 57. Bem-vindos
- 58. Threads
â±
- 58.1. Threads Simples
- 58.2. Threads com Escopo
- 59. Canais (Channels)
â±
- 59.1. Transmissores e Receptores
- 59.2. Canais Ilimitados
- 59.3. Canais Delimitados
- 60. Send e Sync
â±
- 60.1. Traits Marker
- 60.2. Send
- 60.3. Sync
- 60.4. Exemplos
- 61. Estado Compartilhado
â±
- 61.1. Arc
- 61.2. Mutex
- 61.3. Exemplo
- 62. ExercĂcios
â±
- 62.1. Jantar dos FilĂłsofos
- 62.2. Verificador de Links Multi-Threads
- 62.3. SoluçÔes
- ConcorrĂȘncia: Tarde
- 63. Bem-vindos
- 64. Fundamentos de Async (Assincronicidade)
â±
- 64.1. async/await
- 64.2. Futures
- 64.3. Tempos de Execução
â±
- 64.3.1. Tokio
- 64.4. Tarefas
- 65. Canais e Controle de Fluxo
â±
- 65.1. Canais AssĂncronos
- 65.2. Join
- 65.3. Select
- 66. Armadilhas
â±
- 66.1. Bloqueando o Executor
- 66.2. Pin
- 66.3. Traits AssĂncronos
- 66.4. Cancelamento
- 67. ExercĂcios
â±
- 67.1. Jantar dos FilĂłsofos
- 67.2. Apliação de Chat de Transmissão
- 67.3. SoluçÔes
- Palavras Finais
- 68. Obrigado!
- 69. GlossĂĄrio
- 70. Outros recursos
- 71. Créditos