HashMap em Zig (2026): AutoHashMap, StringHashMap e getOrPut
HashMap em Zig: AutoHashMap, StringHashMap e getOrPut Resposta direta: para criar um dicionário em Zig, use std.AutoHashMap(K, V) com chaves numéricas ou structs …
std em portuguêsA biblioteca padrão do Zig, também chamada de Zig stdlib ou simplesmente std, é a coleção de módulos oficiais que acompanha o compilador: memória, arquivos, entrada e saída, HTTP, JSON, criptografia, testes, threads e estruturas de dados. Não existe instalação separada — const std = @import("std"); disponibiliza tudo, de std.mem a std.http.
Esta página funciona como um mapa da stdlib em português. Se você quer resolver uma tarefa específica, comece pela tabela abaixo; se está aprendendo a linguagem, siga a rota recomendada no fim do guia.
Resposta rápida: a stdlib do Zig é o namespace
stdimportado comconst std = @import("std");. Ela já vem com o compilador, semnpm installoucargo add. Acesse o módulo necessário, comostd.mem,std.fsoustd.json. Como a API evolui junto com o Zig (a reescrita de I/O das versões 0.15/0.16 mudoustd.io), confirme exemplos na documentação da versão do seu compilador.
stdA biblioteca padrão já está disponível em qualquer arquivo Zig:
const std = @import("std");
pub fn main() !void {
const texto = "zig,stdlib,portugues";
var partes = std.mem.splitScalar(u8, texto, ',');
while (partes.next()) |parte| {
std.debug.print("{s}\n", .{parte});
}
}
Você pode criar aliases quando isso melhora a leitura, embora usar o caminho completo geralmente deixe a origem de cada API mais clara:
const std = @import("std");
const mem = std.mem;
const fs = std.fs;
Não existe um comando equivalente a npm install std ou cargo add std: a biblioteca padrão faz parte da distribuição do Zig.
zig std: documentação offline no navegadorResposta rápida: zig std é o comando do compilador Zig que abre a documentação da biblioteca padrão da versão instalada no seu navegador, a partir de um servidor local. Não precisa de internet e não precisa instalar nada além do próprio Zig:
zig std # inicia um servidor local com a documentação da stdlib
zig version # mostra a versão do compilador (e, portanto, da stdlib)
A documentação gerada por zig std é pesquisável e navegação por símbolo: cada tipo, função e módulo (std.mem, std.json, std.fmt…) tem sua página com assinatura e código-fonte.
| Você quer… | Comando ou link |
|---|---|
| Consultar a stdlib da sua versão, offline | zig std |
| Saber qual versão do Zig (e da stdlib) está instalada | zig version |
| Consultar a documentação da stdlib em desenvolvimento | ziglang.org/documentation/master/std |
| Aprender os módulos com exemplos em português | As tabelas de módulos abaixo |
Como a API da stdlib muda entre versões (a reescrita de I/O do Zig 0.15/0.16 é o exemplo mais recente), o ideal é consultar a documentação da versão que você usa — e é exatamente isso que o zig std entrega, sem depender de um site externo estar atualizado.
| Se você precisa de… | Comece por |
|---|---|
| Comparar strings, buscar bytes, dividir slices | std.mem |
| Alocar memória de forma explícita | std.mem.Allocator e std.heap |
| Ler ou gravar arquivos e diretórios | std.fs |
| Formatar texto ou converter números | std.fmt |
| Fazer parsing ou gerar JSON | std.json |
| Criar cliente ou servidor HTTP | std.http |
| Trabalhar com TCP, endereços e streams | std.net |
| Criar listas, mapas e filas | ArrayList, HashMap e PriorityQueue |
| Escrever testes | std.testing |
| Executar processos ou ler argumentos | std.process |
| Módulo | Descrição |
|---|---|
| std.io | Visão geral do sistema de I/O |
| std.io.Writer | Interface genérica de escrita |
| std.io.Reader | Interface genérica de leitura |
| std.io Buffered | BufferedReader e BufferedWriter |
| std.io.FixedBufferStream | Stream sobre buffer fixo |
| getStdOut, getStdErr, getStdIn | Acesso aos fluxos padrão |
| Módulo | Descrição |
|---|---|
| std.fs | Visão geral do sistema de arquivos |
| std.fs.cwd() | Diretório atual e operações |
| std.fs.File | Tipo File e operações |
| std.fs.path | Utilitários de caminhos |
| std.fs.Dir | Tipo Dir e iteração |
| Módulo | Descrição |
|---|---|
| std.mem | Visão geral de operações de memória |
| std.mem.Allocator | Interface de alocador |
| std.mem.eql | Comparação e busca em memória |
| std.mem.split | Divisão e tokenização |
| std.heap | Visão geral dos alocadores |
| GeneralPurposeAllocator | Alocador de uso geral |
| ArenaAllocator | Alocador de arena |
| page_allocator | Alocador de páginas |
| FixedBufferAllocator | Alocador sobre buffer fixo |
| Módulo | Descrição |
|---|---|
| ArrayList | Lista dinâmica (vetor) |
| ArrayHashMap | HashMap com ordem de inserção |
| HashMap | Tabela hash genérica |
| StringHashMap | HashMap com chaves string |
| MultiArrayList | Struct of Arrays |
| BoundedArray | Array com tamanho limitado |
| PriorityQueue | Fila de prioridade (heap) |
| SegmentedList | Lista segmentada |
| LinkedList | Listas ligadas |
| Módulo | Descrição |
|---|---|
| std.fmt | Visão geral de formatação |
| Sintaxe de Format | Strings de formatação |
| parseInt, parseFloat | Conversão de strings para números |
| std.json | Visão geral de JSON |
| JSON Parsing | Análise de JSON |
| JSON Stringify | Serialização JSON |
| std.Uri | Análise de URIs |
| std.base64 | Codificação Base64 |
| Módulo | Descrição |
|---|---|
| std.net | Visão geral de rede |
| std.net.Stream | Socket Stream |
| std.net.Address | Tipo Address |
| std.http | Visão geral HTTP |
| HTTP Client | Cliente HTTP |
| HTTP Server | Servidor HTTP |
Atenção (Zig 0.15/0.16): a reescrita de I/O conhecida como Writergate substituiu
std.io.getStdOut().writer()e o padrãobufferedWriterpela nova interfacestd.Io.Writer. Se o seu código parou de compilar, veja o guia de migração Writergate em português.
| Módulo | Descrição |
|---|---|
| std.Thread | Threads nativas |
| Thread.Mutex | Mutex e sincronização |
| Thread.Pool | Pool de threads |
| std.atomic | Operações atômicas |
| Event Loop | Conceitos de event loop |
| Módulo | Descrição |
|---|---|
| std.math | Visão geral de matemática |
| Funções matemáticas | Funções comuns |
| std.crypto | Visão geral de criptografia |
| Hash functions | Funções de hash |
| Crypto random | Números aleatórios criptográficos |
| std.compress | Compressão de dados |
| Módulo | Descrição |
|---|---|
| std.os | Interface com o SO |
| std.process | Processos e ambiente |
| std.time | Tempo e cronômetros |
| std.debug | Depuração e assertivas |
| std.log | Framework de logging |
| std.testing | Utilitários de teste |
| std.sort | Algoritmos de ordenação |
A biblioteca padrão do Zig segue algumas convenções importantes:
Allocator, deixando custo e ciclo de vida visíveis.!T) e se integram a try, catch e errdefer.comptime: muitas APIs recebem tipos e funções em tempo de compilação, sem exigir um sistema separado de generics.[]const u8; operações comuns ficam em std.mem, std.ascii, std.unicode e std.fmt.defer: arquivos, alocações, sockets e outras estruturas frequentemente expõem close, free ou deinit.Ainda não completamente. Zig permanece antes da versão 1.0, portanto a biblioteca padrão pode ganhar novos módulos, remover APIs antigas ou alterar assinaturas. Um exemplo copiado para uma versão diferente do compilador pode falhar mesmo quando o conceito continua correto.
Confira sua versão antes de adaptar um exemplo:
zig version
Para documentação local e experimentação, zig std inicia o navegador de documentação fornecido pelo compilador quando esse comando está disponível na sua versão. Para APIs em evolução, também consulte a documentação oficial da versão master e compare com a versão instalada.
Se você está começando, não tente memorizar todos os módulos. Uma sequência prática é:
std.mem e o guia de strings e arrays.std.mem.Allocator e o tutorial de gerenciamento de memória.ArrayList e HashMap.std.fs, std.fmt e std.json.std.testing.std em Zig?std é o namespace da biblioteca padrão oficial que acompanha o compilador Zig. O código const std = @import("std"); disponibiliza módulos como std.mem, std.fs, std.http, std.json, std.testing e std.heap.
A stdlib não precisa ser instalada pelo gerenciador de pacotes: ela já acompanha o compilador. O sistema de pacotes é usado para dependências externas do projeto, enquanto @import("std") referencia a biblioteca padrão da versão instalada.
std.mem e std.heap?std.mem concentra operações sobre memória e slices, além de definir a interface Allocator. std.heap oferece implementações concretas de alocadores, como arena, páginas e alocadores de uso geral. Em outras palavras, std.mem.Allocator define o contrato; std.heap fornece várias estratégias para cumpri-lo.
Execute zig std para iniciar o navegador de documentação que acompanha o compilador (disponível nas versões recentes) — a seção acima sobre o comando zig std detalha o uso. Ou consulte a documentação oficial da stdlib em inglês. Compare sempre com a versão instalada via zig version.
A principal mudança foi a reescrita do sistema de I/O: a interface std.Io.Writer/std.Io.Reader substituiu APIs antigas como getStdOut().writer() e bufferedWriter. O guia Writergate em Zig: migrar getStdOut para std.Io.Writer mostra o antes e o depois com exemplos.
Use as páginas ligadas neste índice para consultar módulos individuais com explicações e exemplos, e o tutorial de servidor HTTP em Zig para um projeto completo usando a stdlib. Para uma visão compacta, veja também o cheatsheet da biblioteca padrão essencial.
HashMap em Zig: AutoHashMap, StringHashMap e getOrPut Resposta direta: para criar um dicionário em Zig, use std.AutoHashMap(K, V) com chaves numéricas ou structs …
std.ArrayHashMap — Mapa Hash com Ordem de Inserção O std.ArrayHashMap é uma implementação de mapa hash que preserva a ordem de inserção dos elementos. Diferente do …
std.ArrayList — Array Dinâmico O std.ArrayList é a estrutura de dados de array dinâmico da biblioteca padrão do Zig. Ele funciona como um vetor que cresce automaticamente …
std.atomic — Operações Atômicas O módulo std.atomic fornece operações atômicas para programação concorrente sem locks (lock-free programming). Operações atômicas são …
std.crypto — Criptografia O módulo std.crypto fornece implementações criptográficas de alta qualidade escritas em Zig puro (sem dependências de C). Ele inclui funções de …
std.crypto.hash — Funções de Hash Criptográficas As funções de hash criptográficas do Zig produzem um resumo (digest) de tamanho fixo a partir de dados de tamanho …
std.crypto.random — Geração Aleatória Criptograficamente Segura O std.crypto.random fornece acesso a um gerador de números aleatórios criptograficamente seguro (CSPRNG). …
std.debug — Depuração e Diagnóstico O módulo std.debug contém utilitários de depuração para desenvolvimento em Zig. Inclui saída de diagnóstico via stderr, assertions, …
Event Loop e I/O Assíncrono em Zig O Zig historicamente explorou um modelo de programação assíncrona baseado em async frames e um event loop integrado à biblioteca …
std.fmt — Formatação de Strings O módulo std.fmt é o sistema central de formatação do Zig, usado por std.debug.print, writer.print, std.fmt.bufPrint e muitas outras …
std.fmt Format Strings — Sintaxe de Formatação As format strings do Zig controlam como valores são convertidos em texto. Elas são verificadas em tempo de compilação, …
std.fmt.parseInt / parseFloat — Conversão de Strings para Números As funções std.fmt.parseInt e std.fmt.parseFloat convertem representações textuais de números em valores …