Categoria: Rust
Rust é uma linguagem de programação moderna construída sobre três pilares: segurança de memória, desempenho e concorrência. Foi projetada para ocupar o espaço de C e C++ em sistemas onde a eficiência é crítica, eliminando ainda em tempo de compilação os erros clássicos de gerenciamento de memória — e sem precisar de coletor de lixo. O caminho oficial para começar é o livro The Rust Programming Language.
Iteradores avançado
Esta aula aprofunda o uso de iteradores em Rust, abordando métodos avançados como collect com turbofish, fold, zip e enumerate, além de ensinar como criar iteradores personalizados e discutir considerações de performance. O conteúdo inclui exemplos práticos e exercícios para fixação.
✓ Lido
Iteradores
Esta aula aborda o trait Iterator em Rust, seu método next e os principais adaptadores como map e filter, destacando a lazy evaluation. O aluno aprenderá a criar e combinar iteradores de forma eficiente.
✓ Lido
Arc e Mutex
Esta aula aborda o compartilhamento de dados entre threads em Rust usando Arc e Mutex. Você aprenderá a diferença entre Arc e Rc, como usar Mutex com proteção contra poisoning e como evitar deadlocks.
✓ Lido
RefCell e mutabilidade interior
Nesta aula, exploramos o padrão de mutabilidade interior em Rust usando RefCell<T>, que permite mutabilidade mesmo com referências imutáveis, transferindo a verificação de borrows para o runtime. Aprendemos a usar borrow e borrow_mut, combinamos Rc<RefCell<T>> para ter múltiplas referências mutáveis, e discutimos os riscos como panics em runtime e possíveis vazamentos de memória.
✓ Lido
Deref e Drop
Esta aula aborda as traits Deref e Drop do Rust, fundamentais para sobrecarregar o operador de desreferência (*) e gerenciar a limpeza de recursos. Aprenderemos sobre coerção de Deref, ordem de execução de Drop e a função std::mem::drop.
✓ Lido
Rc<T>: contagem de referências
Esta aula aborda o tipo Rc<T> (Reference Counted) do Rust, que permite o compartilhamento de ownership de um valor imutável através de contagem de referências. Veremos como criar, clonar e usar Rc<T>, suas limitações (apenas acesso imutável, sem garantia de ausência de ciclos) e casos de uso típicos, como em grafos ou árvores.
✓ Lido
Canais (channels)
Nesta aula, exploramos canais (channels) em Rust, focando no módulo mpsc (múltiplos produtores, único consumidor). Aprendemos a usar send e recv para comunicação entre threads, lidar com múltiplos produtores e aplicar padrões como roteamento de mensagens e sincronização.
✓ Lido
Threads
Nesta aula, exploramos o uso de threads em Rust com spawn e join, o uso da palavra-chave move em closures, o compartilhamento seguro de dados entre threads, e os riscos de concorrência como data races. Aprenderemos a criar programas concorrentes de forma segura utilizando o sistema de tipos do Rust.
✓ Lido
Send e Sync
Esta aula explora as traits Send e Sync do Rust, fundamentais para garantir segurança de concorrência. Você aprenderá o que essas traits garantem, por que são importantes, quais tipos não as implementam e como elas se relacionam com a segurança de concorrência.
✓ Lido
Async/await: introdução
Esta aula introduz programação assíncrona em Rust, explicando Futures, async/await, o runtime Tokio e as diferenças entre threads e tarefas assíncronas. Você aprenderá a escrever código não bloqueante e eficiente.
✓ Lido
Tokio na prática
Nesta aula, você aprenderá a usar o Tokio na prática, desde a configuração do runtime até a criação de tarefas assíncronas e operações de I/O, com exemplos reais e exercícios para fixar o conteúdo.
✓ Lido
Módulos e visibilidade
Nesta aula, exploramos o sistema de módulos do Rust, que organiza o código em unidades lógicas e controla a visibilidade de itens. Aprendemos a declarar módulos com 'mod', tornar itens públicos com 'pub', importar caminhos com 'use', e navegar por caminhos absolutos e relativos. Ao final, você será capaz de estruturar projetos Rust de forma modular e eficiente.
✓ Lido
Cargo avançado
Nesta aula, você aprenderá a dominar o Cargo, o gerenciador de builds e dependências do Rust. Exploraremos recursos avançados como features, perfis de compilação, dependências de desenvolvimento e scripts de build, permitindo que você configure projetos complexos de forma profissional e eficiente.
✓ Lido
Crates e workspaces
Nesta aula, você aprenderá a diferenciar crates binários e de biblioteca, a criar e gerenciar workspaces no Rust e a organizar projetos grandes de forma modular e eficiente. Vamos explorar a estrutura de um workspace, como declarar dependências entre crates e boas práticas para manter o código limpo e escalável.
✓ Lido