curso em Rust Skill Tree
Laboratórios de Prática em Rust
Iniciante
Este curso contém muitos laboratórios para Rust, cada laboratório é um pequeno projeto Rust com orientação e soluções detalhadas. Você pode praticar suas habilidades em Rust completando esses laboratórios, aprimorar suas habilidades de codificação e aprender a escrever código limpo e eficiente.
linux
💡 Este tutorial foi traduzido do inglês com assistência de IA. Para ver o original, você pode mudar para a versão em inglês
- Introdução
- Programa
Definindo Módulos para Controlar Escopo e Privacidade
Refutabilidade em Correspondência de Padrões Rust
Metaprogramação Rust com Macros
Desabilitando Avisos de Código Inútil em Rust
Compilação Condicional de Funções Rust
Conceitos de Lifetimes na Programação Rust
Linguagens de Domínio Específico
Interfaces Variádicas em Programação Rust
Namespacing em Rust com a Declaração 'use'
Declaração de Ligações de Variáveis em Rust
Fundamentos de Programação Rust: Ligações de Variáveis e Expressões
Ligações de Variáveis Mutáveis em Rust
Ligação Imutável de Dados em Rust
Retornando de Loops
Um Programa de Exemplo Usando Structs
Controlando a Execução de Testes
Elisão de Tempo de Vida (Lifetime Elision) no Borrow Checker do Rust
Ligações de Variáveis e Inferência de Tipos em Rust
Aninhamento e Rótulos
Programação em Rust com Loop FizzBuzz
Fluxo de Controle Conciso com if let
Exploração de Constantes em Rust
Criando uma Biblioteca em Rust
Repetição de Macros em Rust
Explorando Loops Infinitos em Rust
Literais e Especificação de Tipos em Rust
Demonstração de Mutabilidade e Propriedade (Ownership) em Rust
Sobrecarga de Macros Rust com macro_rules!
Erros Irrecuperáveis com Panic
Desestruturação e Dereferenciação em Rust
Explorando Workspaces do Cargo em Rust
Gerenciamento de Tempo de Vida (Lifetime) em Structs do Rust
Anotações de Tempo de Vida em Traits (Traços) Rust
Abort e Unwind
Atributos de Módulos no Desenvolvimento em Rust
Compilação Condicional com o Atributo cfg do Rust
Escopo e Sombreamento de Variáveis
Desestruturando Tuplas em Rust
Lendo um Arquivo
O Que É Ownership?
O Tipo Slice
Tipos Imprimíveis na Biblioteca Padrão do Rust
Aguardando a Conclusão de um Processo Filho
Desestruturação de Estruturas Rust com Correspondência de Padrões
Validando Referências com Lifetimes
Exemplos de Uso de Enum em Rust
Anotações de Tempo de Vida (Lifetime) em Rust e o Borrow Checker
Exploração de Coerção de Tempo de Vida (Lifetime) em Rust
Exploração dos Tipos Primitivos do Rust
Rust *Lifetime* e *Trait Bounds*
Closures em Rust com Restrições Genéricas
Exploração de Limites Múltiplos em Rust
Concorrência de Estado Compartilhado em Rust
Definindo e Instanciando Structs
Documentando Projetos Rust com Markdown
Gerenciamento de Dependências Cargo em Rust
Publicando uma Crate no Crates.io
Empréstimo Mutável no Livro Rust
Personalizando a Saída de Structs Rust com fmt::Display
Desestruturação de Arrays e Slices em Rust
Closures como Parâmetros de Saída
Criando Threads Nativas em Rust
Desestruturação e Uso de Enumerações (Enums) em Rust
Tipos de Comentários e Documentação em Rust
Laços e Intervalos em Rust
O Padrão Ref
Aliases para Result
Explorando as Capacidades Funcionais do Rust
Tratamento de Erros com Retornos Antecipados em Rust
Referências e Empréstimo (Borrowing)
Exemplo de Tratamento de Pânico em Rust
Exploração da Visibilidade de Módulos em Rust
Múltiplos Tipos de Erro
Trazendo Caminhos para o Escopo com a Palavra-chave Use
Aliasagem em Rust: Melhorando a Legibilidade do Código
Explorando Fechamentos em Rust e Captura de Ambiente
Option & Unwrap
Executando Processos Filhos em Rust
Exploração do Conceito de Aliasamento em Rust
Usando Threads para Executar Código Simultaneamente
Herança e Composição de Traits em Rust
Manipulação Encadeável de Option com and_then()
Closures como Parâmetros de Função
Explorando o Tipo Result do Rust
A Declaração `use` em Rust
Aceitando Argumentos da Linha de Comando
Mensagens de Erro Rust para Saída de Erro Padrão
Explorando o Mecanismo de Contagem de Referências do Rust
Acessando Argumentos da Linha de Comando em Rust
Prática de Sintaxe de Padrões Rust
Explorando os Tipos de Structs e Aplicações em Rust
Idioma de Novo Tipo
Packages e Crates
Geração e Teste de Documentação Cargo
A Construção de Fluxo de Controle Match
Armazenando Pares Chave-Valor com Hash Maps em Rust
Usando Box<T> para Dados no Heap
Rc<T>, o Smart Pointer com Contagem de Referências
Funções Avançadas e Closures
Clonando Structs Rust com o Trait Clone
Separando Módulos em Arquivos Diferentes
Explorando Tuplas em Rust e Transposição de Matrizes
Organização Modular de Arquivos em Rust
Assinaturas de Funções Rust com Lifetimes
Explorando Operações Inseguras em Rust
Utilizando uma Biblioteca
Tratando Ponteiros Inteligentes como Referências Regulares
Fatorando a Repetição com Macros Rust
Prática de Sintaxe de Métodos em Rust
Introdução aos Designadores de Macros Rust
Ligação e Desestruturação em Rust
Tipos de Chave Alternativos/Personalizados
Conversão para e de Strings
Exploração de Correspondência de Padrões em Rust
Super e Self
Box, Stack e Heap
Fundamentos de Testes de Software em Rust
Literais e Operadores
Iterando sobre Resultados
Impressão Formatada em Rust
Armazenando Listas de Valores com Vetores
Tratamento de Erros em Rust com o Ponto de Interrogação
Funcionalidade da Biblioteca Rust com Desenvolvimento Orientado a Testes
Leitura Eficiente de Arquivos em Rust
Map para Result
Construindo um Servidor Web de Thread Única
Fundamentos de Empréstimo (Borrowing) e Ownership em Rust
Correspondência de Padrões Concisa em Rust com Let-Else
Explorando Traits em Rust para Métodos Personalizados
Exemplo Avançado de Inferência de Tipos em Rust
Transferência Concorrente de Dados com Canais Rust
Caminhos na Árvore de Módulos do Rust
Propriedade Compartilhada com Rust Arc
Armazenando Texto Codificado em UTF-8 com Strings
Laboratório do Livro Rust: Testes Unitários e de Integração
Escrevendo Funções em Rust
Operações no Sistema de Arquivos em Rust
Iteração Concisa de Opções em Rust com While Let
Extraindo Resultados de Options
Explorando as Operações do Conjunto HashSet em Rust
Análise de Argumentos de Linha de Comando em Rust
Definindo Funções Genéricas em Rust
Declarações Condicionais em Rust
Explorando a Funcionalidade de Genéricos em Rust
Introdução aos Identificadores Brutos em Rust
Parâmetros de Tipo Fantasma
Erros Recuperáveis com Result
Demonstração de Uso de Métodos em Rust
Explorando a Estrutura Path Imutável do Rust
Entendendo o Panic no Rust
Como Escrever Testes
Implementar Trait Genérico de Dupla Desalocação
Explorando o Trait Drop do Rust
Operador Rust Simplifica o Tratamento de Erros
Funções Divergentes em Rust
Visibilidade de Campos de Structs em Rust
Limpeza com a Trait Drop do Rust
Ciclos de Referência Podem Causar Vazamento de Memória
Implementando fmt::Display para List em Rust
TryFrom e TryInto
Explorando a Função Any do Iterador em Rust
Restrições de Tipos Genéricos em Rust
Caso de Teste: Limites Vazios
Explorando a Funcionalidade `Impl Trait` do Rust
Procurando em Iteradores
Sobrecarga de Operadores em Rust
Implementando um Padrão de Design Orientado a Objetos
Interface de Função Estrangeira
Simplificando o Tratamento de `Option` em Rust com `Map`
Fundamentos de Teste de Integração em Rust
Manipulação de Erros com Box em Rust
From e Into
Vetores em Rust: Fundamentos de Arrays Redimensionáveis
Explorando Fechamentos e Comportamento de Captura em Rust
Formatação em Rust e a Trait Display
Explorando o Tipo Enumerado Result do Rust
Propriedade (Ownership) e Movimentações (Moves)
Manipulação de Falhas com o Enum Option do Rust
Lendo Arquivos em Rust
Criar Ficheiro com a Biblioteca Padrão do Rust
Interação de Processos Filhos com Pipes
Manipulação de Erros e Segurança de Memória em Rust
Caso de Teste: Esclarecimento de Unidades
Closures: Funções Anônimas que Capturam seu Ambiente
Arrays e Slices
Desempacotando Opções e Valores Padrão
Desambiguação de Traits Sobrepostos
Processamento Paralelo de Dados em Rust
Implementação Genérica de Traits de Contêiner
Trabalhando com Variáveis de Ambiente
Retornando Traits com Dyn
Explorando a Construção if let do Rust
Desestruturação com Movimento Parcial em Rust
Fundamentos de Testes Unitários em Rust
Utilizando Filtros (Guards) em Rust
Objetos Trait para Valores Heterogêneos
Processando uma Série de Itens com Iteradores
Derive Traits em Structs de Tupla Rust
Definindo um Enum
Definindo um Tipo de Erro
Todos os Lugares Onde os Padrões Podem Ser Usados
Explorando Tipos Associados em Rust
Implementando Tipos Genéricos em Rust
Conversão de Tipos em Rust: Conversão Explícita de Tipos
Funções e Métodos Associados
Gerenciamento de Recursos RAII em Rust
Características das Linguagens Orientadas a Objetos
Explorando o Conceito 'Static' do Rust
Refatoração para Melhorar a Modularidade e o Tratamento de Erros
Implementando Iteradores em Rust
Exploração de Traits Avançadas em Rust
Outras Utilizações de ?
Encapsulamento de Erros com Tipo Personalizado
Explorando os Conceitos de Strings em Rust
Parâmetros de Entrada
Melhorando Nosso Projeto de I/O
Traits: Definindo Comportamento Compartilhado
Explorando os Superpoderes do Unsafe Rust
Tutorial de Armazenamento de Dados HashMap em Rust
Gerenciando Tipos Genéricos em Rust com Cláusulas Where
Desestruturando Options com ?
Removendo Duplicação por Extração de uma Função
Prática de Tipos Avançados em Rust
Conceitos de Enumeração (Enums) e Alias de Tipos em Rust
Implementação de Lista Encadeada em Rust
Comunicação Assíncrona de Canais em Rust
Explorando o Uso de Montagem Inline em Rust
Desenvolvimento de Servidor Multithread em Rust
Exploração de Macros Rust no LabEx
Desligamento e Limpeza Graciosos
RefCell<T> e o Padrão de Mutabilidade Interior
Professor
Labby
Labby is the LabEx teacher.
Compartilhar no Google Classroom
Junte-se ao Nosso Discord e Aprenda Juntos
Junte-se AgoraAvaliações dos Usuários
" easy to follow and when I had an error the bot was helpful "
— Matthew Kurpjuweit
" It's a great learning platform for beginners"
— Ruchi Verma
Recomendado para Você

