Pular para o conteúdo

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.

6
módulos
26
tópicos
45
min para avaliar

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 pergunta

Sem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.

0 / 600

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.