Bem-vindo 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-vindo
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.
Strings
5.6.
InferĂȘncia de Tipo
5.7.
ExercĂcio: Fibonacci
â±
5.7.1.
Solução
6.
Fundamentos de Controle de Fluxo
â±
6.1.
Condicionais
6.2.
Loops
â±
6.2.1.
for
6.2.2.
loop
6.3.
break e continue
â±
6.3.1.
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-vindo
8.
Tuplas e Matrizes
â±
8.1.
Tuplas e Matrizes
8.2.
Iterator de Matrizes
8.3.
CorrespondĂȘncia de PadrĂ”es
8.4.
Desestruturando
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.
ExercĂcio: Geometria
â±
9.3.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.
VariĂĄveis EstĂĄticas e Constantes
10.5.
Aliases (Apelidos) de Tipo
10.6.
ExercĂcio: Eventos de Elevador
â±
10.6.1.
Solução
Dia 2: ManhĂŁ
11.
Bem-vindo
12.
CorrespondĂȘncia de PadrĂ”es
â±
12.1.
Desestruturando
12.2.
Controle de Fluxo Let
12.3.
ExercĂcio: Avaliação de ExpressĂ”es
â±
12.3.1.
Solução
13.
MĂ©todos e Traits
â±
13.1.
MĂ©todos
13.2.
Traits
â±
13.2.1.
Implmementing Traits
13.2.2.
Associated Types
13.3.
Derivando
13.4.
Exercise: Generic Logger
â±
13.4.1.
Solução
14.
Genéricos (Generics)
â±
14.1.
FunçÔes Genéricas
14.2.
Tipos de Dados Genéricos
14.3.
Trait Bounds (Limites de Trait)
14.4.
Trait impl
14.5.
ExercĂcio: min GenĂ©rico
â±
14.5.1.
Solução
Dia 2: Tarde
15.
Bem-vindo
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-vindo
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 Trait
20.4.
ExercĂcio: Ărvore BinĂĄria
â±
20.4.1.
Solução
Dia 3: Tarde
21.
Bem-vindo
22.
Empréstimo (Borrowing)
â±
22.1.
Emprestando um Valor
22.2.
Verificação de Empréstimo
22.3.
Mutabilidade Interior
22.4.
ExercĂcio: EstatĂsticas de SaĂșde
â±
22.4.1.
Solução
23.
Slices (Fatias) e Tempos de Vida (Lifetimes)
â±
23.1.
Slices: &\[T\]
23.2.
ReferĂȘncias de String
23.3.
AnotaçÔes de Tempo de Vida
23.4.
ElisĂŁo de Tempo de Vida
23.5.
Tempos de Vida de Structs
23.6.
ExercĂcio: AnĂĄlise de Protobuf
â±
23.6.1.
Solução
Dia 4: ManhĂŁ
24.
Bem-vindo
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.
Exercise: Modules for a GUI Library
â±
26.5.1.
Solução
27.
Testando
â±
27.1.
MĂłdulos de Teste
27.2.
Outros Tipos de Testes
27.3.
Crates Ăteis
27.4.
GoogleTest
27.5.
Mocking
27.6.
Lints do Compilador e Clippy
27.7.
ExercĂcio: Algoritmo de Luhn
â±
27.7.1.
Solução
Dia 4: Tarde
28.
Bem-vindo
29.
Tratamento de Erros
â±
29.1.
PĂąnicos (Panics)
29.2.
Operador Try
29.3.
ConversÔes Try
29.4.
Trait Error
29.5.
thiserror e anyhow
29.6.
ExercĂcio: Reescrevendo com Result
â±
29.6.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-vindo
32.
Configuração
33.
Regras de Compilação (Build Rules)
â±
33.1.
BinĂĄrios
33.2.
Bibliotecas
34.
AIDL
â±
34.1.
Birthday Service Tutorial
â±
34.1.1.
Interface
34.1.2.
Service API
34.1.3.
Service
34.1.4.
Servidor
34.1.5.
Implantar
34.1.6.
Cliente
34.1.7.
Alterando API
34.1.8.
Updating Implementations
34.2.
AIDL Types
â±
34.2.1.
Primitive Types
34.2.2.
Array Types
34.2.3.
Sending Objects
34.2.4.
Parcelables
34.2.5.
Sending Files
35.
Gerando Registros (Log)
36.
Interoperabilidade
â±
36.1.
Com C
â±
36.1.1.
Chamando C com Bindgen
36.1.2.
Chamando Rust do C
36.2.
Com C++
â±
36.2.1.
O MĂłdulo Bridge
36.2.2.
Bridge Rust
36.2.3.
C++ Gerado
36.2.4.
Bridge C++
36.2.5.
Tipos Compartilhados
36.2.6.
Enums Compartilhados
36.2.7.
Tratamento de Erros do Rust
36.2.8.
Tratamento de Erros do C++
36.2.9.
Tipos Adicionais
36.2.10.
Compilando para Android: C++
36.2.11.
Compilando para Android: Genrules
36.2.12.
Compilando para Android: Rust
36.3.
Com Java
37.
ExercĂcios
Chromium
38.
Bem-vindo
39.
Configuração
40.
Comparando os Ecossistemas do Chromium e do Cargo
41.
PolĂtica
42.
Regras de Compilação (Build Rules)
â±
42.1.
CĂłdigo Inseguro (Unsafe)
42.2.
Dependendo de CĂłdigo Rust do C++ do Chromium
42.3.
Visual Studio Code
42.4.
ExercĂcio
43.
Testando
â±
43.1.
Biblioteca rust_gtest_interop
43.2.
Regras GN para Testes em Rust
43.3.
Macro chromium::import!
43.4.
ExercĂcio
44.
Interoperabilidade com C++
â±
44.1.
Exemplo de Bindings
44.2.
LimitaçÔes do CXX
44.3.
Tratamento de Erros do CXX
â±
44.3.1.
Tratamento de Erros: Exemplo de QR
44.3.2.
Tratamento de Erros: Exemplo de PNG
44.4.
Usando CXX no Chromium
44.5.
ExercĂcio
45.
Adicionando Crates de Terceiros
â±
45.1.
Configurando Cargo.toml
45.2.
Configurando gnrt_config.toml
45.3.
Baixando Crates
45.4.
Gerando Regras de Compilação gn
45.5.
Resolvendo Problemas
â±
45.5.1.
Scripts de Compilação que Geram Código
45.5.2.
Scripts de Compilação que Compilam C++ ou Tomam AçÔes Arbitrårias
45.6.
Dependendo de um Crate
45.7.
RevisÔes e Auditorias
45.8.
Submetendo ao CĂłdigo Fonte do Chromium
45.9.
Mantendo Crates Atualizados
45.10.
ExercĂcio
46.
Juntando Tudo - ExercĂcio
47.
SoluçÔes dos ExercĂcios
Bare Metal: ManhĂŁ
48.
Bem-vindo
49.
no_std
â±
49.1.
Um Pequeno Exemplo
49.2.
alloc
50.
Microcontroladores
â±
50.1.
MMIO Bruto
50.2.
PACs
50.3.
Crates HAL
50.4.
Crates de Suporte Ă Placa
50.5.
O PadrĂŁo de Estado de Tipo
50.6.
embedded-hal
50.7.
probe-rs e cargo-embed
â±
50.7.1.
Depuração
50.8.
Outros Projetos
51.
ExercĂcios
â±
51.1.
BĂșssola
51.2.
SoluçÔes
Bare Metal: Tarde
52.
Processadores de Aplicação
â±
52.1.
Preparando-se para o Rust
52.2.
Assembly In-line
52.3.
MMIO
52.4.
Vamos Escrever um Driver UART
â±
52.4.1.
Mais Traits
52.5.
Um Driver UART Melhor
â±
52.5.1.
Bitflags
52.5.2.
Registradores MĂșltiplos
52.5.3.
Driver
52.5.4.
Usando-o
52.6.
Gerando Registros (Log)
â±
52.6.1.
Usando-o
52.7.
ExceçÔes
52.8.
Outros Projetos
53.
Crates Ăteis
â±
53.1.
zerocopy
53.2.
aarch64-paging
53.3.
buddy_system_allocator
53.4.
tinyvec
53.5.
spin
54.
Android
â±
54.1.
vmbase
55.
ExercĂcios
â±
55.1.
Driver RTC
55.2.
SoluçÔes
ConcorrĂȘncia: ManhĂŁ
56.
Bem-vindo
57.
Threads
â±
57.1.
Threads com Escopo
58.
Canais (Channels)
â±
58.1.
Canais Ilimitados
58.2.
Canais Delimitados
59.
Send e Sync
â±
59.1.
Send
59.2.
Sync
59.3.
Exemplos
60.
Estado Compartilhado
â±
60.1.
Arc
60.2.
Mutex
60.3.
Exemplo
61.
ExercĂcios
â±
61.1.
Jantar dos FilĂłsofos
61.2.
Verificador de Links Multi-Threads
61.3.
SoluçÔes
ConcorrĂȘncia: Tarde
62.
Fundamentos de Async (Assincronicidade)
â±
62.1.
async/await
62.2.
Futures
62.3.
Tempos de Execução
â±
62.3.1.
Tokio
62.4.
Tarefas
62.5.
Canais AssĂncronos
63.
Fluxo de Controle
â±
63.1.
Join
63.2.
Select
64.
Armadilhas
â±
64.1.
Bloqueando o Executor
64.2.
Pin
64.3.
Traits AssĂncronos
64.4.
Cancelamento
65.
ExercĂcios
â±
65.1.
Jantar dos FilĂłsofos
65.2.
Apliação de Chat de Transmissão
65.3.
SoluçÔes
Palavras Finais
66.
Obrigado!
67.
GlossĂĄrio
68.
Outros recursos
69.
Créditos
Light
Rust
Coal
Navy
Ayu
Comprehensive Rust đŠ
English
Brazilian Portuguese (PortuguĂȘs do Brasil)
Chinese Simplified (æ±èŻ)
Chinese Traditional (æŒąèȘ)
Korean (íê”ìŽ)
Spanish (Español)
Crates Ăteis
Vamos ver algumas
crates
que resolvem alguns problemas comuns na programação
bare-metal
.