Termos de Rust
150 termos de Rust em português. Ownership, borrow checker, lifetimes e segurança de memória sem coletor.
A
- abstração de custo zeroPrincípio de que recursos de alto nível, como iteradores e genéricos, compilam para código tão rápido quanto…
- adaptador de iteradorMétodo que recebe um iterador e devolve outro, como map, filter, take e zip. É preguiçoso: nada é calculado…
- AnyTrait da biblioteca padrão que dá identidade de tipo em execução. Com dyn Any é possível guardar valores de…
- anyhowCrate com um tipo de erro genérico, anyhow::Error, e um alias de Result que aceita qualquer erro. Permite…
- ArcPonteiro com contagem atômica de referências, que permite vários donos de um mesmo dado entre threads. Cada…
- asyncPalavra-chave que transforma uma função ou bloco em uma máquina de estados que devolve uma Future. Chamar…
- async fn em traitRecurso estável desde o Rust 1.75 que permite declarar async fn dentro de traits e implementá-las…
- atomicTipos como AtomicUsize e AtomicBool, cujas operações são indivisíveis entre threads sem uso de trava. Cada…
- atributo cfgAtributo #[cfg(...)] e macro cfg!() que incluem ou excluem código conforme condições de compilação, como…
- auto traitTrait implementado automaticamente pelo compilador para um tipo quando todos os seus campos o implementam…
- awaitOperador pós-fixado que espera uma Future terminar e devolve o resultado, cedendo o controle ao executor…
B
- blanket implementationImplementação de um trait para todos os tipos que atendem a um bound, como impl<T: Display> Oi for T. Dá o…
- borrow checkerParte do compilador que confere empréstimos e lifetimes. Garante que referências nunca apontem para dados…
- borrowingUsar um valor por meio de uma referência, sem tomar a posse dele. O dono continua responsável por liberar o…
- BoxPonteiro inteligente que guarda um valor no heap e é seu único dono. Quando o Box sai de escopo, o valor é…
- Box leakFunção Box::leak, que consome um Box e devolve uma referência mutável com lifetime 'static, sem nunca…
- build scriptArquivo build.rs na raiz do pacote, compilado e executado pelo Cargo antes do build principal. Gera código…
C
- cancel safetyPropriedade de uma future que pode ser abandonada em um await, por exemplo dentro de select!, sem perder…
- CargoGerenciador de pacotes e ferramenta de build oficial do Rust. Cria projetos, baixa dependências, compila…
- cargo checkComando que analisa o projeto e aponta erros de tipos e de borrow checker sem gerar o binário final. É bem…
- cargo testComando que compila e executa os testes do projeto: unitários em módulos com #[cfg(test)], de integração na…
- Cargo.lockArquivo gerado pelo Cargo com as versões exatas de cada dependência resolvida. Garante builds reproduzíveis…
- Cargo.tomlArquivo de manifesto do projeto Cargo, em formato TOML, com nome, versão, edição, dependências, features e…
- channelCanal de comunicação entre threads, criado com mpsc::channel, que devolve um emissor (Sender) e um receptor…
- clapCrate para criar interfaces de linha de comando. Com derive(Parser), transforma uma struct em argumentos e…
- clippyLinter oficial do Rust, executado por cargo clippy, que aponta código desnecessariamente complexo, lento ou…
- cloneMétodo do trait Clone que cria uma cópia independente de um valor, inclusive dos dados no heap. É sempre…
- closureFunção anônima que pode capturar variáveis do escopo em que foi criada. Escreve-se com barras verticais…
- comportamento indefinidoSituação em que o programa viola as regras da linguagem, como ler memória inválida ou criar uma referência…
- constDeclara uma constante avaliada em tempo de compilação, com tipo obrigatório. Cada uso é substituído pelo…
- const genericsParâmetros genéricos que são valores constantes, como N em [T; N], em vez de tipos. Permitem structs e…
- CopyTrait marcador para tipos simples cuja cópia bit a bit é barata, como inteiros. Ao atribuir um valor Copy, o…
- CowEnum Cow (clone on write) que guarda dados emprestados ou próprios. Só aloca uma cópia quando precisa…
- crateUnidade de compilação do Rust, que pode ser uma biblioteca ou um executável. Também é o nome dos pacotes…
- crates.ioRegistro público oficial de pacotes do Rust, de onde o Cargo baixa as dependências. Qualquer pessoa pode…
D
- data raceAcesso simultâneo de duas threads ao mesmo dado, com ao menos uma escrita, sem sincronização. O Rust seguro…
- DebugTrait de formatação para depuração, usado por {:?} e {:#?}. Quase sempre é derivado e mostra a estrutura do…
- DefaultTrait que define um valor padrão para o tipo, via Default::default(). Pode ser derivado e combina com a…
- deref coercionConversão automática de &T em &U quando T implementa Deref<Target = U>, aplicada em cadeia. É por isso que…
- deriveAtributo que gera automaticamente a implementação de traits comuns, como Debug, Clone e PartialEq, a partir…
- desestruturaçãoAbrir tuplas, structs, enums e fatias em suas partes com um padrão, direto em let, em parâmetros de função…
- DisplayTrait de formatação para o usuário final, usado por {} e to_string. Você o implementa à mão, escrevendo o…
- doctestExemplo de código dentro de um comentário de documentação, em cercas de código, que o cargo test compila e…
- DropTrait com um único método drop, chamado automaticamente quando o valor sai de escopo. Serve para liberar…
E
- editionMarco de compatibilidade da linguagem escolhido no Cargo.toml: 2015, 2018, 2021 ou 2024. Permite mudanças…
- elisão de lifetimesRegras que deixam o compilador deduzir lifetimes na assinatura de funções, dispensando a anotação explícita…
- enum com dadosEnum cujas variantes carregam valores, cada uma com seu próprio formato. Permite representar um estado ou…
- ErrorTrait da biblioteca padrão que marca um tipo como erro. Exige Debug e Display e permite encadear a causa, o…
- executorComponente que agenda e faz poll das tarefas async até terminarem. O Rust não inclui um na biblioteca…
F
- fat pointerPonteiro de duas palavras: o endereço e um metadado extra, como o tamanho de uma fatia ou a tabela de…
- feature flagRecurso opcional de uma crate, declarado em [features] no Cargo.toml, que liga ou desliga código e…
- FFIInterface de funções externas: chamar código de outras linguagens, normalmente C, com extern "C", ou expor…
- FromTrait que define como converter outro tipo neste tipo, com From::from. Ao implementar From você ganha Into…
- FutureTrait de um valor que representa um cálculo assíncrono ainda não terminado. Possui o método poll, que…
G
- generic associated typesTipos associados com seus próprios parâmetros, como lifetimes ou tipos: type Item<'a>. Estáveis desde o Rust…
- genéricosRecurso para escrever funções, structs e enums que funcionam com vários tipos, declarados entre colchetes…
- guarda de matchCondição if adicionada a um braço do match para refinar o padrão. O braço só é escolhido se o padrão casar e…
H
I
- if letForma curta de match para um único padrão: executa o bloco só se o valor casar, e aceita um else. Muito…
- implPalavra-chave que abre um bloco com métodos de um tipo ou com a implementação de um trait para ele. Separa…
- impl TraitSintaxe que declara um tipo concreto sem nomeá-lo, dizendo apenas qual trait ele implementa. Em argumentos é…
- iteratorValor que produz uma sequência de itens, um por vez, pelo método next. Em Rust os iteradores são preguiçosos…
L
- let elseForma de let com padrão que pode falhar: se o valor não casar, o bloco else precisa divergir, com return…
- lifetimeTrecho do programa durante o qual uma referência é válida. Anotações como 'a dizem ao compilador como as…
- loopLaço infinito que só termina com break. Em Rust, loop é uma expressão: o break pode devolver um valor, que…
M
- macroCódigo que escreve código em tempo de compilação. As macros de uso comum terminam com !, como println! e…
- macro_rulesForma de definir macros declarativas por casamento de padrões sobre tokens, como ($x:expr) => { ... }. Gera…
- ManuallyDropWrapper que impede o compilador de chamar o Drop do valor automaticamente. O destrutor só roda se você…
- marker traitTrait sem métodos que apenas marca uma propriedade do tipo, como Copy, Send e Sync. O compilador e os bounds…
- matchExpressão que compara um valor com vários padrões e executa o primeiro que casa. O compilador exige que…
- MaybeUninitTipo que representa memória possivelmente não inicializada, para montar valores aos poucos sem ler dados…
- mem forgetFunção que consome um valor sem rodar seu destrutor, deixando o recurso sem liberação. É segura, porque…
- mem takeFunção de std::mem que troca o valor de uma referência mutável pelo Default do tipo e devolve o valor…
- memory orderingArgumento Ordering das operações atômicas (Relaxed, Acquire, Release, AcqRel e SeqCst) que define quais…
- MiriInterpretador que executa o código em um modelo da memória do Rust e detecta comportamento indefinido, como…
- modo releasePerfil de compilação com otimizações ligadas, ativado por cargo build --release. Gera um binário bem mais…
- móduloUnidade de organização do código declarada com mod. Agrupa itens, controla o que é público e forma a árvore…
- monomorfizaçãoProcesso em que o compilador gera uma cópia do código genérico para cada tipo concreto usado. Dá velocidade…
- moveTransferência de posse de um valor para outro lugar, como uma variável, um argumento ou uma closure. Depois…
- move parcialMover apenas um campo de uma struct ou tupla, deixando os outros no lugar. O valor inteiro deixa de ser…
- mutPalavra-chave que marca uma variável ou referência como mutável. Em Rust tudo é imutável por padrão, e mut é…
- mutabilidade interiorPadrão que permite alterar um valor por uma referência compartilhada, usando tipos como Cell, RefCell e…
- MutexTrava de exclusão mútua que protege um dado: lock() devolve um guard, e só uma thread por vez acessa o…
- mutex poisoningEstado em que um Mutex da std fica envenenado quando uma thread dá panic segurando a trava. O lock() passa a…
N
- newtypePadrão de envolver um tipo em uma struct de um único campo, como struct Metros(f64), para criar um tipo…
- niche optimizationOtimização em que o compilador usa valores inválidos de um tipo, como o ponteiro nulo, para representar…
- no_stdAtributo de crate que desliga a biblioteca padrão e usa só a core, para sistemas embarcados e kernels. Sem…
- non-lexical lifetimesRegra do compilador, ativa desde a edição 2018, em que um empréstimo termina no último uso da referência, e…
O
- object safetyConjunto de regras que um trait precisa cumprir para ser usado como dyn Trait: sem métodos genéricos e sem…
- operador interrogaçãoOperador ? que, em Result ou Option, entrega o valor interno em caso de sucesso, ou retorna da função com o…
- OptionEnum da biblioteca padrão com as variantes Some(valor) e None, que representa um valor que pode estar…
- ordem de dropRegra que define quando os valores são liberados: variáveis locais em ordem inversa da declaração, e campos…
- orphan ruleRegra de coerência que só permite implementar um trait para um tipo se o trait ou o tipo forem definidos na…
- ownershipSistema de regras do Rust em que cada valor tem um único dono; quando o dono sai de escopo, o valor é…
P
- panicFalha irrecuperável que interrompe a thread atual, liberando seus valores e exibindo uma mensagem. É…
- PartialEqTrait que habilita == e !=. Por ser parcial, aceita tipos em que um valor pode não ser igual a si mesmo…
- PhantomDataTipo de tamanho zero que informa ao compilador que uma struct se comporta como se contivesse um T, sem…
- PinWrapper que impede que o valor apontado seja movido na memória, essencial para futures auto-referenciáveis…
- ponteiro brutoPonteiros *const T e *mut T, sem garantias de validade, de lifetime ou de exclusividade. Criar um é seguro…
- procedural macroMacro escrita como função Rust que recebe e devolve um fluxo de tokens, executada na compilação. Pode ser…
- pubPalavra-chave que torna um item visível fora do módulo onde foi declarado. Em Rust tudo é privado por…
R
- RAIIPadrão em que adquirir um recurso e liberá-lo está ligado à vida de um valor. Em Rust, o Drop libera…
- rayonCrate de paralelismo de dados que transforma iteradores em paralelos com par_iter. Distribui o trabalho em…
- RcPonteiro com contagem de referências para dados compartilhados em uma única thread. Cada clone aumenta o…
- reborrowCriar uma nova referência a partir de outra, normalmente &mut *r, que empresta o valor por um tempo menor e…
- RefCellContêiner que move a checagem de empréstimos para a execução. Permite alterar um valor mesmo por referência…
- referência compartilhadaReferência &T que dá acesso somente de leitura a um valor e pode existir em quantidade ilimitada ao mesmo…
- referência mutávelReferência &mut T que permite alterar o valor emprestado. O Rust garante que só exista uma por vez, e sem…
- repr CAtributo #[repr(C)] que fixa o layout de uma struct ou enum como no C: campos na ordem declarada, com…
- ResultEnum da biblioteca padrão com as variantes Ok(valor) e Err(erro), usado em operações que podem falhar. É o…
- rustfmtFerramenta oficial de formatação de código Rust, chamada por cargo fmt. Aplica um estilo único, o que…
- rustupInstalador e gerenciador de toolchains do Rust. Permite instalar as versões stable, beta e nightly, alternar…
- RwLockTrava que permite vários leitores ao mesmo tempo ou um único escritor. Útil para dados lidos com frequência…
S
- scoped threadThread criada dentro de std::thread::scope, que garante terminar antes do fim do escopo. Por isso a closure…
- sealed traitPadrão em que um trait público só pode ser implementado dentro da própria crate, porque exige um supertrait…
- selfPalavra-chave que representa a instância em métodos: self toma a posse, &self empresta para leitura e &mut…
- SendTrait marcador que indica que um valor pode ser movido para outra thread com segurança. É automático para a…
- serdeCrate padrão de fato para serializar e desserializar estruturas Rust em formatos como JSON, TOML e YAML, por…
- shadowingDeclarar uma nova variável com o mesmo nome de outra no mesmo escopo, que esconde a anterior. Permite até…
- SizedTrait automático para tipos cujo tamanho é conhecido na compilação. Todo parâmetro genérico é Sized por…
- static lifetimeO lifetime 'static indica uma referência válida por todo o programa, como literais de texto, ou um tipo que…
- StringTipo de texto UTF-8 dono dos seus dados, alocado no heap e que pode crescer. É diferente de &str, que apenas…
- string sliceO tipo &str: uma referência a um trecho de texto UTF-8 que pertence a outro dono. Literais de texto e fatias…
- structTipo composto que agrupa campos nomeados. Em Rust é a base para modelar dados, e os métodos ficam em blocos…
- supertraitTrait que exige outro como requisito, declarado como trait A: B. Quem implementa A precisa implementar B, e…
- SyncTrait marcador que indica que referências &T ao tipo podem ser compartilhadas entre threads com segurança. T…
T
- teste de integraçãoTeste que fica na pasta tests e usa a crate como um usuário externo, só pela API pública. Cada arquivo em…
- thiserrorCrate que gera, com um derive, a implementação de Display e Error para enums de erro de bibliotecas. Reduz o…
- threadFio de execução do sistema operacional, criado com std::thread::spawn. Cada thread recebe uma closure, e o…
- tipo associadoTipo declarado dentro de um trait, como Item em Iterator, que cada implementação define. Evita um parâmetro…
- tipo neverO tipo ! das expressões que nunca produzem valor, como panic! e funções que não retornam. Converte-se em…
- tokioRuntime assíncrono mais usado do Rust, com executor multithread, timers, I/O de rede e canais. Fornece…
- tracingCrate de instrumentação para logs estruturados e spans, que registra eventos com campos e o contexto de…
- traitConjunto de métodos que um tipo se compromete a oferecer. É o mecanismo de abstração do Rust, parecido com…
- trait boundRestrição que exige que um tipo genérico implemente certos traits, como T: Display. Define o que a função…
- trait objectValor acessado por trás de um ponteiro, como Box<dyn Trait>, cujo método é escolhido em tempo de execução…
- trait upcastingConversão de &dyn SubTrait ou Box<dyn SubTrait> em &dyn SuperTrait. Foi estabilizada no Rust 1.86 e funciona…
- traits de closureOs traits Fn, FnMut e FnOnce, que dizem como uma closure usa o que capturou: só lendo, alterando ou…
- turbofishSintaxe ::<T> usada para indicar o tipo genérico em uma chamada, como parse::<i32>() ou collect::<Vec<_>>()…
- two-phase borrowMecanismo em que um empréstimo &mut começa reservado e só se torna exclusivo no uso real, permitindo ler o…
- typestatePadrão que codifica o estado de um objeto no próprio tipo, como Porta<Aberta> e Porta<Fechada>. Operações…
U
- unsafePalavra-chave que abre um bloco ou marca uma função onde o programador assume a responsabilidade por…
- unsafe traitTrait cuja implementação exige uma garantia que o compilador não confere. Quem implementa precisa escrever…
- UnsafeCellPrimitiva do núcleo da linguagem para mutabilidade interior: o único meio legítimo de alterar dados atrás de…
- unwrapMétodo que extrai o valor de um Option ou Result e causa panic se for None ou Err. É rápido de escrever, mas…
V
- variânciaPropriedade que diz como um tipo genérico reage a lifetimes ou tipos mais longos ou curtos: &T é covariante…
- VecVetor dinâmico que guarda elementos do mesmo tipo de forma contígua no heap. Cresce conforme necessário e é…
W
- WakerHandle que uma tarefa async entrega ao executor para ser acordada. Quando o recurso fica pronto, quem o…
- workspaceConjunto de crates que compartilham o mesmo Cargo.lock e a mesma pasta de build, declarado com [workspace]…