Categoria

Rust

Vectors: coleções dinâmicas
Rust

Vectors: coleções dinâmicas

Em Rust, Vec<T> é a principal estrutura de dados para coleções dinâmicas alocadas no heap. Diferente dos arrays [T; N], que têm tamanho fixo conhecido em tempo de compilação, os vectors podem crescer ou encolher dinamicamente durante a execução do programa.

05/05/2026
WASM: compilando Rust para o navegador
Rust 05/05/2026

WASM: compilando Rust para o navegador

WebAssembly (WASM) revolucionou o desenvolvimento web ao permitir que linguagens como Rust executem código próximo à velocidade nativa dentro do navegador. Rust se destaca nesse cenário por três razões fundamentais:

Workspaces: monorepos com Cargo
Rust 05/05/2026

Workspaces: monorepos com Cargo

Quando um projeto Rust cresce além de um único crate, surge a necessidade de organizar múltiplos crates que se relacionam entre si. É aqui que os workspaces do Cargo entram em cena. Um workspace é um conjunto de um ou mais crates que compartilham o mesmo diretório raiz, o mesmo arquivo Cargo.lock e um processo de build unificado.

Zero-cost abstractions: o que significa na prática
Rust 05/05/2026

Zero-cost abstractions: o que significa na prática

O conceito de "zero-cost abstraction" foi popularizado por Bjarne Stroustrup no contexto de C++, mas encontrou em Rust seu lar mais natural. A ideia central é simples: abstrações de alto nível não devem impor custos de runtime que você não está utilizando. Em Rust, isso significa que você pode escrever código expressivo e seguro sem sacrificar performance — desde que o compilador consiga eliminar o overhead em tempo de compilação.

TUI apps com Ratatui: interfaces no terminal
Rust 05/05/2026

TUI apps com Ratatui: interfaces no terminal

Terminal User Interfaces (TUIs) oferecem uma alternativa elegante para aplicações que não necessitam de interfaces gráficas completas. Em Rust, o ecossistema para construção de TUIs é maduro, com destaque para o Ratatui — um fork ativo do popular tui-rs. Diferente de bibliotecas como Cursive (orientada a callbacks) ou termion (baixo nível), o Ratatui adota uma abordagem reativa e declarativa, similar a frameworks web modernos.

Type-level programming com traits e associated types
Rust 05/05/2026

Type-level programming com traits e associated types

Programação em nível de tipo (type-level programming) é uma técnica onde computações são realizadas durante a compilação, usando o sistema de tipos como motor de execução. Diferente da programação em nível de valor, que opera sobre dados em tempo de execução, a programação em nível de tipo manipula tipos como se fossem valores, permitindo que invariantes sejam verificados estaticamente.

Unsafe Rust: quando e como usar
Rust 05/05/2026

Unsafe Rust: quando e como usar

Rust é conhecido por suas garantias de segurança de memória em tempo de compilação. No entanto, existem cenários onde o compilador não pode verificar automaticamente se o código é seguro. Para esses casos, Rust oferece o bloco unsafe, que permite ao programador assumir a responsabilidade por garantir a segurança.

Use e paths: navegando no sistema de módulos
Rust 05/05/2026

Use e paths: navegando no sistema de módulos

O sistema de módulos do Rust é uma ferramenta poderosa para organizar código em projetos complexos. Para navegar nessa hierarquia, utilizamos paths — equivalentes a caminhos de arquivos, mas aplicados a módulos. Existem dois tipos principais:

Variáveis, mutabilidade e shadowing
Rust 05/05/2026

Variáveis, mutabilidade e shadowing

Em Rust, toda variável precisa ser declarada antes de ser usada. A forma mais básica de declaração utiliza a palavra-chave let, que permite ao compilador inferir o tipo da variável automaticamente na maioria dos casos:

Threads em Rust: segurança garantida pelo compilador
Rust 05/05/2026

Threads em Rust: segurança garantida pelo compilador

Rust oferece um dos modelos de concorrência mais seguros entre linguagens de programação modernas. A base dessa segurança está no sistema de ownership e borrowing, que já conhecemos do código sequencial. Em Rust, o compilador estende essas garantias para o mundo multithread, prevenindo data races e condições de corrida em tempo de compilação.