# 🎯 Definição
> [!Abstract] Definição
> Palavras reservadas (ou keywords) são identificadores especiais que o compilador do [[Linguagem Rust|Rust]] utiliza para funcionalidades específicas da linguagem. Elas **não podem ser usadas como nomes** de variáveis, funções, structs ou qualquer outro identificador, pois possuem um significado semântico fixo para o sistema de tipos e controle de fluxo.
# 📝 Notas
Para facilitar a consulta, as palavras-chave foram agrupadas por categoria funcional:
## 1. Controle de Fluxo e Iteração
| Palavra-chave | Descrição |
| :--- | :--- |
| `if` / `else` | Ramificação condicional. |
| `match` | Comparação de padrões (Pattern Matching). |
| `loop` | Loop infinito (incondicional). |
| `while` | Loop condicional. |
| `for` / `in` | Iteração sobre coleções ou implementação de traits. |
| `break` / `continue` | Sai de um loop ou pula para a próxima iteração. |
| `return` | Retorna um valor de uma função. |
## 2. Declarações e Definições
| Palavra-chave | Descrição |
| :--- | :--- |
| `let` | Vincula um valor a uma variável. |
| `fn` | Define uma função ou tipo de ponteiro de função. |
| `struct` | Define uma estrutura de dados. |
| `enum` | Define uma enumeração. |
| `trait` | Define uma interface de comportamento. |
| `impl` | Implementa funcionalidades para tipos ou traits. |
| `const` / `static` | Define itens constantes ou globais. |
| `type` | Cria um alias para um tipo existente. |
## 3. Módulos e Visibilidade
| Palavra-chave | Descrição |
| :--- | :--- |
| `mod` | Define um novo módulo. |
| `use` | Traz símbolos para o escopo atual. |
| `pub` | Torna um item público (visível para outros módulos). |
| `crate` | Refere-se à raiz do crate atual. |
| `super` | Refere-se ao módulo pai. |
| `extern` | Vincula bibliotecas ou funções externas (FFI). |
## 4. Assincronismo e Concorrência
| Palavra-chave | Descrição |
| :--- | :--- |
| `async` | Define um bloco ou função que retorna uma `Future`. |
| `await` | Suspende a execução até que uma `Future` seja resolvida. |
| `move` | Força um closure a assumir a propriedade (ownership) de suas capturas. |
## 5. Outros Identificadores Especiais
- `as`: Realiza conversão de tipos (casting) ou renomeia itens no `use`.
- `dyn`: Indica despacho dinâmico para objetos de trait.
- `mut`: Denota mutabilidade em referências ou variáveis.
- `self` / `Self`: Referem-se à instância atual ou ao tipo que está sendo implementado.
- `unsafe`: Delimita blocos de código que ignoram certas verificações de segurança do compilador.
- `where`: Adiciona restrições complexas de tipo (generics).
- `ref`: Vincula por referência em padrões de busca.
> [!Tip] Identificadores Brutos
> Se você realmente precisar usar uma palavra reservada como nome (ex: uma [[Interface de Programação de Aplicações|API]] externa que usa `match`), você pode usar o prefixo `r#` (ex: `let r#match = 10;`).
# 🔗 Conceitos relacionados
- [[Variáveis em Rust]]
- [[Tipos de dados em Rust]]
- [[Linguagem Rust]]
# 📚 Referências
- [Keywords - The Rust Reference](https://doc.rust-lang.org/reference/keywords.html)
- [Appendix A: Keywords - The Rust Programming Language](https://doc.rust-lang.org/book/appendix-01-keywords.html)