Jornada
Aprenda Rust
Um curso online de Rust grátis e interativo. Você escreve Rust em cada lição — sintaxe, ownership e borrowing, lifetimes, traits, pattern matching — com dicas de IA quando o borrow checker reclama, e um certificado grátis ao concluir.
16,687+ codders inscritos
- Ideal para iniciantes
Ajuda de codificação com IA
Lições interativas e práticas
Narração em áudio em todas as lições
Questionários para testar seu conhecimento
Certificado grátis de conclusão
Programa
Seção 1
Fundamentals
Começar seçãoIniciarExpandirRecolherBuild a strong foundation with essential concepts and basic skillsIntrodução
4 lições324- 01RustDesafio
- 02Olá, Mundo!DesafioQuiz
- 03ComentáriosQuiz
- 04Estrutura Básica de um ProgramaDesafioQuiz
Variáveis Parte 1
5 lições539- 01NúmerosDesafioQuiz
- 02CharDesafioQuiz
- 03StringDesafioQuiz
- 04BooleanoDesafioQuiz
- 05Variáveis MutáveisDesafioQuiz
Variáveis Parte 2
5 lições433- 01Declaração de TipoDesafioQuiz
- 02Convenções de NomenclaturaQuiz
- 03Inferência de TipoDesafioQuiz
- 04Recapitulação - Inicializar VariáveisDesafio
- 05Conversão de TipoDesafioQuiz
Operadores Parte 1
5 lições438- 01Operadores AritméticosDesafioQuiz
- 02Operador de MóduloDesafioQuiz
- 03Atalhos AritméticosDesafioQuiz
- 04Operadores de ComparaçãoDesafioQuiz
- 05Comparação de StringsQuiz
Operadores Parte 2
4 lições424- 01Operadores Lógicos Parte 1DesafioQuiz
- 02Operadores Lógicos Parte 2DesafioQuiz
- 03Recapitulação - Lógica SimplesDesafio
- 04Operadores Lógicos Parte 3DesafioQuiz
Tomada de Decisão
5 lições532- 01Expressões IfDesafioQuiz
- 02If-ElseDesafioQuiz
- 03Instrução MatchDesafioQuiz
- 04Recapitulação - If ElseDesafio
- 05If - Else AninhadosDesafioQuiz
Entrada e Saída Básica
4 lições417- 01Exibindo no ConsoleDesafioQuiz
- 02Lendo a Entrada do UsuárioDesafioQuiz
- 03Revisão - Até 120Desafio
- 04Revisão - Verdadeiro ou FalsoDesafio
Aplicativo de Calculadora
Projeto4 lições1- 01Mensagem de Boas-vindasDesafio
- 02Obtendo NúmerosProjeto
- 03Operações BásicasProjeto
- 04Saída FormatadaProjeto
Laços
8 lições851- 01For sobre SériesDesafioQuiz
- 02Laço WhileDesafioQuiz
- 03BreakDesafioQuiz
- 04ContinueDesafioQuiz
- 05Laços AninhadosDesafioQuiz
- 06Rótulos de LoopDesafioQuiz
- 07Loop InfinitoDesafioQuiz
- 08Recapitulação - Entrada DinâmicaDesafio
Vinculação de Variáveis
4 lições230- 01EscopoQuiz
- 02Shadowing Parte 1DesafioQuiz
- 03Vinculação de VariávelQuiz
- 04Shadowing Parte 2DesafioQuiz
Funções
6 lições634- 01Declarando FunçõesDesafioQuiz
- 02Parâmetros e ArgumentosDesafioQuiz
- 03Valores de RetornoDesafioQuiz
- 04Múltiplos Valores de RetornoDesafioQuiz
- 05Recapitulação - Função SigmaDesafio
- 06Recapitulação - Função de ValidaçãoDesafio
Fundamentos de Arrays
5 lições430- 01Declarando ArraysDesafioQuiz
- 02Array como ParâmetroQuiz
- 03Acessando ElementosDesafioQuiz
- 04Modificando ArraysDesafioQuiz
- 05Recapitulação - Pretty Print de ArrayDesafio
Arrays: Continuação
5 lições423- 01Arrays de Referência MutáveisDesafioQuiz
- 02Métodos de ArrayDesafioQuiz
- 03Recapitulação - Array de ProdutoDesafio
- 04Recapitulação - Array InvertidoDesafio
- 05Print MelhoradoQuiz
Iterando sobre Arrays
4 lições333- 01Guia de RangeDesafioQuiz
- 02Loop For AprimoradoDesafioQuiz
- 03Borrow no LoopQuiz
- 04Operações Comuns com ArraysDesafioQuiz
Operações com Strings
4 lições424- 01Métodos de StringDesafioQuiz
- 02Macro format!DesafioQuiz
- 03Conversão de StringsDesafioQuiz
- 04Recapitulação - FormatDesafio
Projetos Finais
3 lições37- 01Padrão NuméricoDesafioQuiz
- 02Localizador de PadrõesDesafio
- 03Calculadora de Notas de AlunosDesafio
Seção 2
Logic & Flow
Começar seçãoIniciarExpandirRecolherDevelop problem-solving skills and create dynamic, interactive programsFluxo de Controle Avançado
6 lições640- 01A Expressão 'match'DesafioQuiz
- 02Correspondência de Múltiplos ValoresDesafioQuiz
- 03Correspondência de IntervalosDesafioQuiz
- 04A Expressão 'if let'DesafioQuiz
- 05Loops como ExpressõesDesafioQuiz
- 06Recapitulação - Parser de Comandos SimplesDesafio
Introdução a Vetores
8 lições756- 01O que é um Vetor?Quiz
- 02Criando um VetorDesafioQuiz
- 03Adicionando Elementos com pushDesafioQuiz
- 04Acessando Elementos do VetorDesafioQuiz
- 05Iterando sobre um VetorDesafioQuiz
- 06Iteração MutávelDesafioQuiz
- 07Removendo ElementosDesafioQuiz
- 08Recapitulação - Rastreador de Pontuação BásicoDesafio
Lista de Tarefas via Linha de Comando
5 lições5- 01Configuração do ProjetoDesafio
- 02Adicionando uma TarefaDesafio
- 03Visualizando Todas as TarefasDesafio
- 04Removendo uma TarefaDesafio
- 05Código FinalDesafio
Agrupando Dados com Structs
7 lições650- 01O que é uma Struct?Quiz
- 02Visão Geral de StructsDesafioQuiz
- 03Acessando Campos de uma StructDesafioQuiz
- 04Structs MutáveisDesafioQuiz
- 05Structs como Parâmetros de FunçãoDesafioQuiz
- 06Tuple StructsDesafioQuiz
- 07Recapitulação - Criando uma Struct BookDesafio
Pares Chave-Valor com Hash Maps
8 lições653- 01O que é um Hash Map?Quiz
- 02Criando um Hash MapQuiz
- 03Inserindo Pares Chave-ValorDesafioQuiz
- 04Acessando ValoresDesafioQuiz
- 05Iterando sobre um Hash MapDesafioQuiz
- 06Atualizando um ValorDesafioQuiz
- 07Removendo um ParDesafioQuiz
- 08Recapitulação - Contador de PalavrasDesafio
Lidando com a Ausência com 'Option'
7 lições645- 01O que é um 'Option'?Quiz
- 02Usando 'match' com 'Option'DesafioQuiz
- 03is_some() e is_none()DesafioQuiz
- 04Fazendo o unwrap de um 'Option'DesafioQuiz
- 05O método expectDesafioQuiz
- 06Fornecendo um valor padrão: unwrap_orDesafioQuiz
- 07Recapitulação - Encontrar um ElementoDesafio
Tratando Erros com 'Result'
7 lições648- 01O que é um 'Result'?Quiz
- 02Usando 'match' com 'Result'DesafioQuiz
- 03is_ok() e is_err()DesafioQuiz
- 04Atalhos: unwrap e expectDesafioQuiz
- 05O Operador de Interrogação '?'DesafioQuiz
- 06Parsing de Strings para NúmerosDesafioQuiz
- 07Recapitulação - Função de Divisão SeguraDesafio
Projeto: Inventário Simples de Itens
5 lições5- 01Configuração do ProjetoDesafio
- 02Adicionando um ItemDesafio
- 03Verificando o EstoqueDesafio
- 04Vendendo um ItemDesafio
- 05Juntando tudoDesafio
Slices de String e Mais
5 lições432- 01String vs. &strQuiz
- 02Criando Slices de StringDesafioQuiz
- 03Slices como Parâmetros de FunçãoDesafioQuiz
- 04Outros SlicesDesafioQuiz
- 05Recapitulação - Encontrar a Primeira PalavraDesafio
Closures & Funções Anônimas
5 lições431- 01O que é uma Closure?Quiz
- 02Definindo uma Closure SimplesDesafioQuiz
- 03Closures com ParâmetrosDesafioQuiz
- 04Capturando o AmbienteDesafioQuiz
- 05Recapitulação - Closure de Soma SimplesDesafio
Desafios Finais
3 lições3- 01Revisão - Itens ÚnicosDesafio
- 02Revisão - Validador de Perfil de UsuárioDesafio
- 03Revisão - Sumarizador de NotasDesafio
Seção 3
Object Oriented Programming
Começar seçãoIniciarExpandirRecolherDiscover how to organize code with classes, objects, and reusable structuresMétodos e Comportamento
7 lições748- 01Introdução a Blocos de ImplementaçãoDesafioQuiz
- 02O Parâmetro SelfDesafioQuiz
- 03Métodos MutáveisDesafioQuiz
- 04Funções AssociadasDesafioQuiz
- 05Múltiplos Blocos de ImplementaçãoDesafioQuiz
- 06Encadeamento de MétodosDesafioQuiz
- 07Recapitulação - Ações de RetânguloDesafio
Encapsulamento e Módulos
6 lições543- 01Fundamentos de MódulosQuiz
- 02A Palavra-chave PublicDesafioQuiz
- 03Campos PrivadosDesafioQuiz
- 04GettersDesafioQuiz
- 05SettersDesafioQuiz
- 06Recapitulação - Cofre SeguroDesafio
Enums Avançados
5 lições535- 01Enums com DadosDesafioQuiz
- 02Métodos em EnumsDesafioQuiz
- 03Correspondência de Variantes de DadosDesafioQuiz
- 04O Enum Option RevisitadoDesafioQuiz
- 05Recapitulação - Enum ShapeDesafio
Projeto: Pet Virtual
Projeto5 lições1- 01Definindo o PetDesafio
- 02Alimentando o PetProjeto
- 03Brincando com o PetProjeto
- 04Relatório de StatusProjeto
- 05Interação FinalProjeto
Genéricos
5 lições533- 01Structs GenéricasDesafioQuiz
- 02Métodos GenéricosDesafioQuiz
- 03Múltiplos Tipos GenéricosDesafioQuiz
- 04Funções GenéricasDesafioQuiz
- 05Recapitulação - Ponto de CoordenadaDesafio
Definição de Traits
6 lições641- 01O que é uma Trait?DesafioQuiz
- 02Implementando TraitsDesafioQuiz
- 03Implementações PadrãoDesafioQuiz
- 04Sobrescrevendo PadrõesDesafioQuiz
- 05Traits com ParâmetrosDesafioQuiz
- 06Recapitulação - Media PlayerDesafio
Traits Padrão
5 lições536- 01A Trait DebugDesafioQuiz
- 02A Trait DisplayDesafioQuiz
- 03Clone e CopyDesafioQuiz
- 04Traits de IgualdadeDesafioQuiz
- 05Recapitulação - Ponto ImprimívelDesafio
Traits como Restrições
5 lições534- 01Sintaxe de Restrições de TraitDesafioQuiz
- 02Restrições MúltiplasDesafioQuiz
- 03A Cláusula WhereDesafioQuiz
- 04Retornando Tipos com TraitsDesafioQuiz
- 05Recapitulação - Impressora GenéricaDesafio
Objetos Trait
4 lições425- 01Despacho DinâmicoDesafioQuiz
- 02Vetores de TraitsDesafioQuiz
- 03Iterando Objetos TraitDesafioQuiz
- 04Recapitulação - Gerenciador de ZoológicoDesafio
Projeto: Sistema de Documentos
Projeto5 lições1- 01A Trait DrawDesafio
- 02Componente de TextoProjeto
- 03Componente de BotãoProjeto
- 04A Struct ScreenProjeto
- 05Executando a TelaProjeto
Padrões de Projeto em Rust
5 lições531- 01Padrão NewtypeDesafioQuiz
- 02ComposiçãoDesafioQuiz
- 03A Trait DropDesafioQuiz
- 04From e IntoDesafioQuiz
- 05Recapitulação - Mock de Smart PointerDesafio
Desafios Finais
3 lições3- 01Pilha GenéricaDesafio
- 02Catálogo de BibliotecaDesafio
- 03Calculadora de Área de FormasDesafio
Por que aprender Rust com a Coddy
- Escreva e execute código Rust de verdade no navegador. Sem instalar rustup, sem configurar Cargo. Cada aula compila seu programa Rust no servidor e mostra a saída (e qualquer erro do compilador) na hora.
- O que torna Rust único: ownership, borrowing, lifetimes, traits, enums e pattern matching, tratamento de erros com
Result. Os fundamentos de Rust que todo programador de sistemas precisa. - As dicas de IA explicam os erros notoriamente rigorosos do compilador do Rust, transformando o borrow checker em professor em vez de um muro quando você está começando.
- Certificado grátis de Rust ao concluir o curso. Um sinal confiável para vagas em sistemas, infraestrutura, blockchain e embarcados, áreas em que Rust vem se tornando a linguagem preferida.
Perguntas frequentes sobre aprender Rust
Rust é fácil de aprender?
Rust tem fama de ser difícil, principalmente por causa do ownership e do borrow checker — conceitos que a maioria das outras linguagens nem expõe. Em compensação, o compilador pega uma quantidade enorme de bugs já na hora do build. O curso introduz ownership e borrowing aos poucos, com exercícios curtos que transformam o borrow checker de muro em professor.
Para que serve o Rust?
Programação de sistemas, infraestrutura (partes do kernel do Linux, Cloudflare, Discord, Dropbox), ferramentas de linha de comando, sistemas embarcados, WebAssembly e uma fatia crescente de código de blockchain e cripto. Mira nos mesmos nichos de C e C++, mas com garantias de segurança bem mais fortes.
Quanto tempo leva para aprender Rust?
O básico de Rust — sintaxe, controle de fluxo, funções, structs, enums — leva de duas a quatro semanas de prática diária. Ficar confortável com ownership, borrowing, lifetimes e traits costuma levar mais dois a seis meses. A maestria (lifetimes avançados, async, unsafe Rust) é uma jornada mais longa e funciona melhor quando guiada por projetos reais.
Devo aprender Rust ou Go?
Ambas são linguagens modernas e de tipagem estática voltadas para servidores e infraestrutura, mas com trade-offs diferentes. Go prioriza compilação rápida, concorrência simples e uma spec enxuta — mais fácil de aprender. Rust prioriza desempenho e segurança de memória sem garbage collector — mais difícil de aprender, mas vai para um nível mais baixo. Escolha Go para backends e ferramentas de cloud; escolha Rust para trabalho de sistemas, código com desempenho crítico ou qualquer coisa que antes era feita em C/C++.
Dá pra aprender Rust online de graça?
Sim. O curso interativo de Rust é gratuito — aulas completas, exercícios de código, quizzes e um certificado. O Rust compila no servidor, então você não precisa instalar rustup nem Cargo localmente para começar a escrever Rust de verdade.
Recebo um certificado depois do curso de Rust?
Sim. Ao concluir o curso de Rust, você recebe um certificado de conclusão gratuito. Um comprovante verificável que dá para incluir no currículo ou compartilhar no LinkedIn junto com seus projetos em Rust, ferramentas de CLI ou contribuições open-source.