Trilha de estudo
Trilha Rust: tudo o que estudar, tópico por tópico
Avaliacao abrangente de Rust cobrindo ownership e borrowing, seguranca de memoria, traits e generics, tratamento de erros, concorrencia, programacao de sistemas, codigo unsafe, macros e otimizacao de desempenho.
Resposta curta
Para aprender Rust, percorra 6 módulos e 26 tópicos na ordem em que um apoia o próximo. Comece por Fundamentos da Linguagem e siga para Memoria & Ownership e Estruturas de Dados & Traits. Use o mapa como checklist, ou meça seu nível e estude só o que falta.
O que você vai estudar
Os tópicos estão agrupados por módulo. Abra um para ver os objetivos e os conceitos-chave.
1 · Fundamentos da Linguagem5 tópicos
Variaveis & Tipos
Bindings let, mutabilidade, inferencia de tipos, tipos escalares (i32, f64, bool, char), tipos compostos (tuplas, arrays), shadowing, constantes e variaveis estaticas
Objetivos
- Declarar e inicializar variaveis com mutabilidade adequada
- Compreender os fundamentos do sistema de tipos do Rust
Conceitos-chave
- bindings let
- palavra-chave mut
- inferencia de tipos
- tipos escalares
- tuplas
- arrays
- shadowing
- const vs static
Fluxo de Controle
Expressoes if/else, loop/while/for, rotulos de loop, break com valores, ranges, iteracao sobre colecoes
Objetivos
- Escrever fluxo de controle idiomatico em Rust
- Utilizar expressoes loop para retornar valores
Conceitos-chave
- if como expressao
- palavra-chave loop
- laco while
- laco for in
- rotulos de loop
- break com valor
- ranges
- laco for com iterador
Funcoes
Assinaturas de funcoes, valores de retorno, instrucoes vs expressoes, funcoes divergentes (!), nocoes basicas de closures, ponteiros de funcao
Objetivos
- Escrever funcoes com assinaturas adequadas
- Compreender expressoes vs instrucoes
Conceitos-chave
- palavra-chave fn
- valores de retorno
- instrucoes vs expressoes
- retorno implicito
- funcoes divergentes (!)
- ponteiros de funcao
- funcoes aninhadas
- retorno antecipado
Pattern Matching
Expressoes match, exaustividade, if let, while let, desestruturacao de tuplas/structs, guardas, binding com @, padroes aninhados
Objetivos
- Escrever expressoes match exaustivas
- Utilizar desestruturacao e guardas de padroes efetivamente
Conceitos-chave
- expressao match
- verificacao de exaustividade
- if let
- while let
- desestruturacao
- guardas de match
- binding @
- padroes aninhados
Cargo & Modulos
Cargo.toml, dependencias, workspaces, sistema de modulos (mod, pub, use), raiz do crate, regras de visibilidade, re-exportacoes
Objetivos
- Configurar e gerenciar projetos Rust com Cargo
- Organizar codigo com modulos e visibilidade
Conceitos-chave
- Cargo.toml
- cargo build/run/test
- dependencias
- workspaces
- palavra-chave mod
- visibilidade pub
- declaracoes use
- crate vs modulo
2 · Memoria & Ownership4 tópicos
Ownership
Regras de ownership, semantica de move, traits Copy vs Clone, alocacao stack vs heap, String vs &str, ownership de Vec
Objetivos
- Explicar as tres regras de ownership do Rust
- Prever quando valores sao movidos vs copiados
Conceitos-chave
- regras de ownership
- semantica de move
- trait Copy
- trait Clone
- stack vs heap
- String vs &str
- funcao drop
- transferencia de ownership
Borrowing & Referencias
Referencias imutaveis (&T), referencias mutaveis (&mut T), regras de borrowing, referencias pendentes, re-borrowing, contagem de referencias
Objetivos
- Aplicar regras de borrowing corretamente
- Corrigir erros comuns do borrow checker
Conceitos-chave
- referencia imutavel &T
- referencia mutavel &mut T
- regras de borrowing
- sem aliasing + mutacao
- referencias pendentes
- re-borrowing
- borrow checker
- NLL (non-lexical lifetimes)
Lifetimes
Anotacoes de lifetime, regras de elisao de lifetime, lifetimes em structs, lifetime 'static, bounds de lifetime, higher-ranked trait bounds (HRTB)
Objetivos
- Anotar lifetimes corretamente
- Compreender regras de elisao de lifetime
Conceitos-chave
- anotacoes de lifetime 'a
- regras de elisao de lifetime
- lifetimes em structs
- lifetime 'static
- bounds de lifetime
- multiplos lifetimes
- subtipagem de lifetime
- HRTB (for<'a>)
Ponteiros Inteligentes
Box<T>, Rc<T>, Arc<T>, RefCell<T>, Mutex<T>, Weak<T>, padrao de mutabilidade interior, traits Deref e Drop
Objetivos
- Escolher o ponteiro inteligente adequado para cada situacao
- Aplicar o padrao de mutabilidade interior
Conceitos-chave
- Box<T>
- Rc<T>
- Arc<T>
- RefCell<T>
- Mutex<T>
- Weak<T>
- mutabilidade interior
- coercao Deref
3 · Estruturas de Dados & Traits5 tópicos
Structs & Enums
Definicoes de struct, tuple structs, unit structs, variantes de enum (unit, tupla, struct), blocos impl, funcoes associadas, metodos
Objetivos
- Projetar tipos com structs e enums
- Implementar metodos com receivers self adequados
Conceitos-chave
- definicao de struct
- tuple struct
- unit struct
- variantes de enum
- blocos impl
- funcoes associadas
- metodos (self, &self, &mut self)
- enum com dados
Traits
Definicao de traits, implementacao, metodos padrao, trait bounds, supertraits, regra do orfao, derive macros, traits comuns (Display, Debug, From, Into)
Objetivos
- Definir e implementar traits idiomaticamente
- Aplicar a regra do orfao corretamente
Conceitos-chave
- definicao de trait
- impl Trait for Type
- metodos padrao
- trait bounds
- supertraits
- regra do orfao
- derive macro
- Display/Debug/From/Into
Generics
Funcoes genericas, structs/enums genericos, trait bounds, clausulas where, monomorfizacao, sintaxe impl Trait, operador turbofish
Objetivos
- Escrever codigo generico com trait bounds apropriados
- Compreender o custo da monomorfizacao
Conceitos-chave
- funcoes genericas
- structs genericos
- trait bounds
- clausulas where
- monomorfizacao
- sintaxe impl Trait
- turbofish ::<>
- tipos associados vs generics
Iteradores & Closures
Trait Iterator, iter/into_iter/iter_mut, map/filter/fold/collect, capturas de closures (Fn, FnMut, FnOnce), move closures, avaliacao lazy
Objetivos
- Encadear adaptadores de iteradores fluentemente
- Escolher a trait de closure correta para capturas
Conceitos-chave
- trait Iterator
- iter/into_iter/iter_mut
- map/filter/fold
- collect
- Fn/FnMut/FnOnce
- move closures
- avaliacao lazy
- iteradores customizados
Colecoes
Vec<T>, HashMap<K,V>, HashSet<T>, BTreeMap, BTreeSet, VecDeque, LinkedList, API entry, traits de colecao
Objetivos
- Escolher colecoes apropriadas para diferentes casos de uso
- Utilizar a API entry para maps eficientes
Conceitos-chave
- Vec<T>
- HashMap<K,V>
- HashSet<T>
- BTreeMap/BTreeSet
- VecDeque
- API entry
- trait Extend
- FromIterator
4 · Tratamento de Erros & Concorrencia5 tópicos
Option & Result
Option<T>, Result<T, E>, unwrap, expect, map, and_then, unwrap_or, combinadores, conversao entre Option e Result
Objetivos
- Utilizar combinadores de Option e Result fluentemente
- Evitar chamadas desnecessarias de unwrap
Conceitos-chave
- Option<T>
- Result<T, E>
- unwrap/expect
- map/and_then
- unwrap_or/unwrap_or_else
- metodos ok/err
- conversao Option para Result
- combinadores
Tratamento de Erros
Operador ?, tipos de erro customizados, trait From para erros, crate thiserror, crate anyhow, cadeias de erro, Box<dyn Error>
Objetivos
- Implementar tratamento de erros idiomatico com operador ?
- Projetar hierarquias de tipos de erro
Conceitos-chave
- operador ?
- tipos de erro customizados
- trait From para erros
- crate thiserror
- crate anyhow
- Box<dyn Error>
- cadeias de erro
- Display para erros
Threads & Channels
std::thread::spawn, JoinHandle, move closures para threads, canais mpsc, Mutex<T>, RwLock, seguranca de threads
Objetivos
- Criar threads e comunicar via channels com seguranca
- Proteger estado compartilhado com Mutex
Conceitos-chave
- thread::spawn
- JoinHandle
- move closures
- mpsc::channel
- mpsc::sync_channel
- Mutex<T>
- RwLock<T>
- thread::scope
Async/Await
async fn, .await, trait Future, runtime tokio, criacao de tasks, select!, join!, streams assincronos, nocoes basicas de pinning para async
Objetivos
- Escrever codigo assincono com tokio
- Compreender a trait Future e o modelo de polling
Conceitos-chave
- async fn
- .await
- trait Future
- runtime tokio
- tokio::spawn
- macro select!
- macro join!
- streams assincronos
Send & Sync
Trait Send, trait Sync, auto-traits, por que Rc nao e Send, por que RefCell nao e Sync, PhantomData para marker traits, wrappers thread-safe
Objetivos
- Explicar a semantica de Send e Sync
- Escolher tipos thread-safe para codigo concorrente
Conceitos-chave
- trait Send
- trait Sync
- comportamento de auto-trait
- Rc nao e Send
- RefCell nao e Sync
- padrao Arc + Mutex
- PhantomData
- impls negativas
5 · Programacao de Sistemas4 tópicos
Rust Unsafe
Blocos unsafe, ponteiros brutos, funcoes unsafe, traits unsafe, os cinco superpoderes unsafe, invariantes de seguranca, abstracoes seguras sobre codigo unsafe
Objetivos
- Identificar os cinco superpoderes unsafe
- Escrever abstracoes seguras sobre codigo unsafe
Conceitos-chave
- bloco unsafe
- ponteiros brutos *const/*mut
- funcoes unsafe
- traits unsafe
- cinco superpoderes unsafe
- invariantes de seguranca
- abstracao segura
- comportamento indefinido
FFI
Interface de Funcoes Estrangeiras, blocos extern, #[no_mangle], chamando C do Rust, expondo Rust para C, bindgen, cbindgen, repr(C)
Objetivos
- Chamar funcoes C do Rust com seguranca
- Expor APIs Rust para consumidores C
Conceitos-chave
- extern "C" fn
- #[no_mangle]
- chamando C do Rust
- expondo Rust para C
- bindgen
- cbindgen
- repr(C)
- crate libc
Layout de Memoria
Layout de struct, atributos repr (C, transparent, packed, align), size_of, align_of, padding, discriminantes de enum, otimizacao de nicho
Objetivos
- Controlar layout de memoria com atributos repr
- Compreender otimizacao de nicho
Conceitos-chave
- repr(C)
- repr(transparent)
- repr(packed)
- repr(align)
- size_of/align_of
- padding
- discriminante de enum
- otimizacao de nicho
WebAssembly
wasm-pack, wasm-bindgen, compilando Rust para WASM, interoperabilidade com JavaScript, alvo wasm32-unknown-unknown, WASI, otimizacao de tamanho
Objetivos
- Compilar Rust para WebAssembly
- Fazer interoperabilidade entre Rust WASM e JavaScript
Conceitos-chave
- wasm-pack
- wasm-bindgen
- wasm32-unknown-unknown
- WASI
- #[wasm_bindgen]
- otimizacao de tamanho (wasm-opt)
- interoperabilidade com JavaScript
- web-sys/js-sys
6 · Rust Especialista3 tópicos
Macros
Macros declarativas (macro_rules!), macros procedurais (derive, atributo, function-like), higiene de macros, arvores de tokens, crates syn/quote
Objetivos
- Escrever macros declarativas com macro_rules!
- Implementar macros procedurais derive
Conceitos-chave
- macro_rules!
- padroes de macro
- repeticao ($(...)*)
- proc macro derive
- macros de atributo
- proc macros function-like
- crates syn/quote
- higiene de macros
Sistema de Tipos Avancado
Programacao em nivel de tipo, PhantomData, tipos associados, GATs (tipos associados genericos), Pin<T>, Unpin, apagamento de tipo (dyn Trait), variancia, simulacao de tipos de alto grau
Objetivos
- Aplicar Pin para tipos auto-referenciais
- Compreender variancia e suas implicacoes
Conceitos-chave
- PhantomData
- tipos associados
- GATs
- Pin<T>
- Unpin
- dyn Trait
- variancia (covariante, contravariante, invariante)
- padrao type-state
Otimizacao de Desempenho
Abstracoes de custo zero, benchmarking (criterion), profiling (perf, flamegraph), SIMD, otimizacao de cache, estrategias de alocacao, computacao em tempo de compilacao
Objetivos
- Realizar profiling e otimizar programas Rust
- Aplicar principios de abstracao de custo zero
Conceitos-chave
- abstracoes de custo zero
- benchmarking criterion
- profiling flamegraph
- instrinsicos SIMD
- estruturas de dados cache-friendly
- alocacao em arena
- const fn
- otimizacao em tempo de link (LTO)
Níveis: Júnior, Pleno, Sênior e Especialista
Explique com suas palavras
Corrigido por IA · sem cadastro · 1 perguntaSem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.
Já estuda Rust?
A avaliação mede tópico por tópico, e o plano pula o que você já sabe.
Aberto para ler. A conta só é necessária para ser medido.
Perguntas frequentes
Por onde começar a estudar Rust?
Comece por Fundamentos da Linguagem: Variaveis & Tipos, Fluxo de Controle e Funcoes. O mapa ordena os tópicos pelo que depende de quê, então cada um prepara o seguinte.
Quanto tempo leva uma avaliação completa de Rust?
Uma avaliação completa desta trilha leva cerca de 45 minutos. O tempo de estudo depende de onde você começa; o diagnóstico mostra quais tópicos você pode pular.
Preciso de conta para usar esta página?
Não. O mapa, os objetivos e os conceitos-chave são abertos. A conta só é necessária para ser medido, ver seu gap por tópico e receber um plano.