Quiz 08 - Introdução
1. **Qual a principal utilidade de uma Struct?**
Mudar o tipo de uma variável
Agrupar dados relacionados em um único tipo nomeado
Criar um loop infinito
Definir o ponto de entrada do programa
> **Explicação**: Structs permitem criar modelos de dados complexos com múltiplos campos.
2. **Como acessamos um campo de uma instância de uma Struct?**
`instancia[campo]`
`instancia::campo`
`instancia.campo`
`instancia->campo`
> **Explicação**: Usamos a notação de ponto para acessar os membros da estrutura.
3. **Para definir funções que pertencem a uma Struct, usamos o bloco:**
`def`
`struct`
`impl`
`method`
> **Explicação**: O bloco `impl` (implementation) abriga os métodos e funções associadas do tipo.
4. **O que significa o parâmetro `&self` em um método?**
Que o método é estático
Uma referência à instância atual na qual o método foi chamado
Que o método deve ser deletado
É um parâmetro obrigatório para todas as funções
> **Explicação**: `&self` permite que o método acesse os dados da própria struct sem obter a posse (ownership) dela.
5. **Qual a diferença básica entre Structs e Enums?**
Structs são mais rápidas
Structs agrupam campos; Enums permitem escolher entre variantes diferentes
Enums não podem ter métodos
Structs não podem ser mutáveis
> **Explicação**: Enums representam uma escolha ("ou"); Structs representam uma coleção ("e").
6. **Como o Rust lida com a ausência de um valor (o conceito de "null")?**
Usando o valor 0
Usando a palavra-chave `nil`
Através do Enum `Option` (Some ou None)
O Rust não permite a ausência de valores
> **Explicação**: O `Option` força o desenvolvedor a lidar com o caso onde o valor pode não existir, eliminando crashes de ponteiros nulos.
7. **Qual a sintaxe para criar um Enum onde uma variante contém um dado interno?**
`enum Cor { Vermelho = "red" }`
`enum Mensagem { Escrever(String) }`
`enum Valor { int n }`
`enum Item { Some: i32 }`
> **Explicação**: Variantes de Enum em Rust podem carregar dados de qualquer tipo.
8. **Para extrair um valor de um `Option` ou de um Enum, a ferramenta mais comum é:**
Um loop `for`
Pattern matching com `match` (ou `if let`)
Um casting de tipo
Uma macro `print!`
> **Explicação**: O `match` permite extrair os dados internos de forma segura e exaustiva.
9. **O que são "Unit-like Structs"?**
Structs que possuem apenas um campo
Structs sem nenhum campo (úteis para implementar traits sem dados)
Structs que guardam apenas números 1
Funções que parecem structs
> **Explicação**: São structs Vazias, declaradas apenas como `struct SempreAtivado;`.
10. **Uma "Tuple Struct" é definida como:**
`struct Cor(i32, i32, i32);`
`struct Cor(i32, i32, i32);`
`struct Cor { r: i32, g: i32, b: i32 }`
Uma tupla normal
> **Explicação**: Elas têm nome mas não nomeiam seus campos individuais.