Noções Básicas de Coleções
8 exemplos - 5 básicos, 3 intermediários - para escolher coleções padrão.
Pré-requisitos
Exemplos Básicos
1. Vec - Sequência Padrão
let mut v = vec![1, 2, 3];
v.push(4);Array de heap expansível. Padrão para listas.
2. HashMap - Pesquisa Rápida por Chave
use std::collections::HashMap;
let mut m = HashMap::new();
m.insert("port", 8080);Pesquisa média O(1). Chaves não ordenadas.
3. BTreeMap - Chaves Ordenadas
use std::collections::BTreeMap;
let mut m = BTreeMap::new();
m.insert(3, "c");
m.insert(1, "a");Iteração ordenada. Operações O(log n).
4. HashSet / BTreeSet
use std::collections::HashSet;
let s: HashSet<_> = [1, 2, 2].into_iter().collect();Elementos únicos. 2 deduplicado.
5. Quando Escolher Qual
| Necessidade | Escolha |
|---|---|
| Crescimento tipo pilha | Vec |
| Pesquisa rápida, sem ordem | HashMap |
| Varreduras de intervalo / ordem | BTreeMap |
| Associação única | HashSet |
Exemplos Intermediários
6. VecDeque para Filas
use std::collections::VecDeque;
let mut q = VecDeque::from([1, 2]);
q.push_front(0);Inserção/remoção eficiente em ambas as extremidades.
7. BinaryHeap para Prioridade
use std::collections::BinaryHeap;
let mut h = BinaryHeap::from([3, 1, 2]);
assert_eq!(h.pop(), Some(3));Max-heap por padrão.
8. Dicas de Capacidade
let mut v = Vec::with_capacity(1000);Reduz realocações quando o tamanho é conhecido.
Relacionado: Melhores Práticas de Coleções e Iteradores
Versões da Pilha: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4 e Polars 0.46+.