Pular para o conteúdo

Rust Roadmap

Um guia prático e progressivo para aprender Rust e construir software rápido e confiável.

  • Algoritmos e resolução de problemas
  • Pseudocódigo
  • Linguagens compiladas vs interpretadas
  • Variáveis e constantes
  • Tipos de dados
  • Comentários
  • Entrada e saída no terminal
  • Condicionais
  • Estruturas de repetição
  • Funções
  • Stack vs heap
  • Ponteiros e referências (conceitual)
  • Por que gerenciamento de memória importa
  • Instalação com rustup
  • Cargo: new, run, build, check, test
  • rustfmt e clippy
  • Editor com rust-analyzer
  • Variáveis, imutabilidade e mut
  • Shadowing
  • Constantes
  • Tipos escalares: inteiros, ponto flutuante, bool, char
  • Tipos compostos: tuplas e arrays
  • Funções, instruções e expressões
  • Comentários e comentários de documentação (///)
  • if como expressão
  • loop, while e for
  • Ranges
  • Regras de ownership
  • Move vs copy (Copy e Clone)
  • Referências e borrowing (& e &mut)
  • As regras do borrow checker
  • Slices (&str, &[T])
  • String vs &str
  • Structs, tuple structs e unit structs
  • Métodos e funções associadas (impl)
  • Enums com dados
  • Option<T>
  • match e exaustividade
  • if let, let else e while let
  • Padrões avançados e guards
  • Pacotes, crates e módulos
  • mod, use e pub
  • Separação entre lib.rs e main.rs
  • Workspaces do Cargo
  • Dependências e crates.io
  • Features do Cargo
  • Vec<T>
  • HashMap e HashSet
  • BTreeMap e VecDeque
  • Strings e UTF-8
  • panic! vs erros recuperáveis
  • Result<T, E>
  • O operador ?
  • Tipos de erro customizados
  • Crates thiserror (bibliotecas) e anyhow (aplicações)
  • Funções e tipos genéricos
  • Traits e implementações
  • Traits da biblioteca padrão (Debug, Display, Clone, PartialEq, From, Default)
  • derive
  • Trait bounds e where
  • impl Trait e dyn Trait
  • Lifetimes e elisão
  • Associated types
  • Closures (Fn, FnMut, FnOnce)
  • Iteradores e o trait Iterator
  • Adaptadores: map, filter, fold, collect
  • Desempenho de iteradores vs laços
  • Box<T>
  • Rc<T> e Arc<T>
  • RefCell<T> e mutabilidade interior
  • Weak<T> e ciclos de referência
  • Trait Drop
  • Threads com std::thread
  • Troca de mensagens com channels
  • Estado compartilhado com Mutex e RwLock
  • Send e Sync
  • Paralelismo de dados com rayon
  • async e await
  • Futures
  • Runtime tokio
  • Tasks, select! e cancelamento
  • Streams
  • Testes unitários com #[test]
  • Testes de integração (tests/)
  • Doc tests
  • Testes baseados em propriedades (proptest)
  • Benchmarks com criterion
  • clippy e cargo audit
  • axum e actix-web
  • Serialização com serde
  • Cliente HTTP com reqwest
  • Middlewares com tower
  • gRPC com tonic
  • Validação de entrada
  • sqlx (SQL verificado em tempo de compilação)
  • diesel e SeaORM
  • Migrações
  • Redis
  • Argumentos com clap
  • Configuração e variáveis de ambiente
  • Saída colorida e barras de progresso
  • Distribuição de binários
  • Logging e tracing com tracing
  • Métricas com Prometheus
  • OpenTelemetry
  • Build otimizado (--release, profiles, LTO)
  • Compilação cruzada (targets)
  • Imagens Docker multi-stage e mínimas
  • CI/CD com GitHub Actions
  • WebAssembly (wasm-bindgen, wasm-pack)
  • Sistemas embarcados (no_std)
  • Desenvolvimento de jogos (Bevy)
  • Interfaces gráficas (Tauri, egui)
  • Interoperabilidade com C (FFI) e Python (PyO3)
  • unsafe Rust e suas garantias
  • Macros declarativas (macro_rules!)
  • Macros procedurais
  • Layout de memória e repr
  • Pin e internals de async
  • Otimização de desempenho e profiling
  1. Domine ownership, borrowing e as mensagens do compilador
  2. Modele seus dados com structs, enums e pattern matching
  3. Trate erros com Result e ? desde o início
  4. Construa uma CLI com clap e serde e depois uma API com axum e tokio
  5. Empacote com Docker, publique com CI/CD e observe com tracing

Foque em projetos reais ao invés de só teoria.

Sugestões:

  • CLI útil para o seu dia a dia
  • Reimplementar uma ferramenta Unix (grep, wc, cat)
  • API REST com axum, sqlx e PostgreSQL
  • Um módulo WebAssembly rodando no navegador

🔥 Regra de ouro: Aprenda - Aplique - Ensine - Repita