Categoria

Rust

Compile-time computation com const fn e const generics
Rust

Compile-time computation com const fn e const generics

Em Rust, const fn permite que funções sejam executadas durante a compilação, produzindo valores constantes que podem ser usados em contextos onde o compilador exige valores conhecidos em tempo de compilação. Diferente de funções regulares, const fn são avaliadas pelo compilador quando chamadas em contextos const, como inicialização de constantes, tamanhos de arrays estáticos ou parâmetros de const generics.

05/05/2026
Benchmarks com Criterion
Rust 05/05/2026

Benchmarks com Criterion

Benchmarks em Rust vão muito além de testes unitários. Enquanto testes verificam correção, benchmarks medem desempenho — uma diferença crucial. Testes unitários passam ou falham; benchmarks geram números: nanossegundos, throughput, alocações. E para isso, o Criterion.rs é a ferramenta padrão na comunidade Rust.

Borrowing: referências imutáveis e mutáveis
Rust 05/05/2026

Borrowing: referências imutáveis e mutáveis

Em Rust, o sistema de ownership resolve problemas de gerenciamento de memória sem um garbage collector, mas copiar valores grandes repetidamente seria ineficiente. O borrowing (empréstimo) surge como solução: em vez de transferir a posse de um valor, você pode "emprestá-lo" temporariamente.

Box<T>: alocação no heap
Rust 05/05/2026

Box<T>: alocação no heap

Em Rust, a memória é gerenciada de forma previsível e segura através de um sistema de ownership. A stack (pilha) é usada para dados de tamanho conhecido em tempo de compilação, enquanto o heap (monte) é reservado para dados dinâmicos. O Box<T> é um ponteiro inteligente que permite alocar dados no heap, mantendo um ponteiro na stack que aponta para o valor armazenado.

Building secure Rust: auditoria de dependências com cargo-audit
Rust 05/05/2026

Building secure Rust: auditoria de dependências com cargo-audit

O ecossistema Rust é conhecido por suas garantias de segurança de memória, mas isso não elimina vulnerabilidades em dependências de terceiros. Um estudo do GitHub mostrou que mais de 90% das vulnerabilidades em projetos modernos vêm de dependências indiretas. No Rust, com mais de 150.000 crates no crates.io, o risco é real.

Canais: mpsc e comunicação entre threads
Rust 05/05/2026

Canais: mpsc e comunicação entre threads

Em sistemas concorrentes, um dos maiores desafios é permitir que threads troquem informações sem incorrer em condições de corrida ou acesso simultâneo a dados mutáveis. Rust oferece uma abordagem elegante para esse problema através do módulo std::sync::mpsc (Multiple Producer, Single Consumer).

Async/await em Rust: fundamentos
Rust 05/05/2026

Async/await em Rust: fundamentos

A programação concorrente tradicional utiliza threads do sistema operacional para executar múltiplas tarefas simultaneamente. Cada thread possui sua própria pilha e contexto, o que permite execução paralela real em CPUs multi-core. No entanto, threads são caras: cada uma consome megabytes de memória para a pilha, e a alternância entre elas (context switching) tem custo significativo.

Authentication com JWT e password hashing com argon2
Rust 05/05/2026

Authentication com JWT e password hashing com argon2

A autenticação em aplicações web modernas segue um fluxo bem definido: o usuário se registra fornecendo credenciais (email e senha), que são armazenadas de forma segura. Posteriormente, ao fazer login, as credenciais são verificadas e, se válidas, um token JWT é gerado e retornado ao cliente. Esse token é enviado em requisições subsequentes para acessar rotas protegidas, permitindo que o servidor identifique o usuário sem manter estado de sessão.

Adaptadores de iterador: map, filter, collect, fold
Rust 05/05/2026

Adaptadores de iterador: map, filter, collect, fold

Em Rust, os adaptadores de iterador são métodos que transformam ou filtram sequências de dados sem executar a computação imediatamente. Eles seguem o princípio de lazy evaluation: você constrói um pipeline de transformações, mas nada é processado até que um consumidor (consumer) seja chamado.