Quiz 07 - Introdução
1. **Qual a principal diferença entre `String` e `&str`?**
`String` é apenas para JavaScript
`String` é alocada na Heap e crescível; `&str` é uma referência a dados existentes
Não há diferença técnica
`&str` é sempre mutável
> **Explicação**: `String` é o "dono" do texto na Heap, enquanto `&str` é apenas uma visualização (slice).
2. **Como criamos uma nova `String` a partir de um literal de texto?**
`String::new("texto")`
`"texto".to_string()`
`String::from("texto")` (ou `"texto".to_string()`)
`new String("texto")`
> **Explicação**: `String::from` é a forma mais idiomática de criar uma String a partir de um literal.
3. **Para que servem os Vetores (`Vec`)?**
Para desenhar gráficos 3D
Para armazenar listas de valores do mesmo tipo com tamanho dinâmico
Para guardar chaves e valores
Para gerenciar o banco de dados
> **Explicação**: Vetores são coleções crescíveis de elementos homogêneos.
4. **Qual macro é usada para inicializar um Vetor com valores pré-definidos?**
`v!`
`vec!`
`array!`
`list!`
> **Explicação**: A macro `vec![1, 2, 3]` é um atalho conveniente para criar vetores.
5. **Qual o comportamento do método `.get(index)` em um Vetor?**
Retorna o valor diretamente ou dá crash
Retorna um `Option<&T>` (Some ou None)
Deleta o elemento no índice informado
Retorna o tamanho total do vetor
> **Explicação**: O `.get()` é seguro porque lida com a possibilidade do índice não existir via `Option`.
6. **Onde os dados de uma `String` ou `Vec` são armazenados?**
Na Pilha (Stack)
No Monte (Heap)
No Cargo.toml
Na Placa de Vídeo
> **Explicação**: Por serem crescíveis, eles precisam do espaço dinâmico da Heap.
7. **Qual coleção é usada para armazenar pares de Chave e Valor?**
Vec
HashMap
Tuple
Slice
> **Explicação**: `HashMap` permite associar um identificador único (chave) a um dado (valor).
8. **Para usar um `HashMap`, você precisa importar:**
`std::map`
`std::collections::HashMap`
`crate::hash`
Nada, ele já está no prelúdio do Rust
> **Explicação**: Diferente de `Vec`, o `HashMap` não é incluído automaticamente no escopo.
9. **O que acontece se você inserir uma chave no HashMap que já existe?**
Erro de compilação
O programa dá crash
O valor antigo é substituído pelo novo
A inserção é ignorada
> **Explicação**: O HashMap atualiza o valor se a chave já estiver presente.
10. **Um "String Slice" (`&str`) é garantido de ser sempre validado como:**
ASCII
UTF-8 válido
Binário puro
Texto criptografado
> **Explicação**: O Rust garante que todas as strings sejam UTF-8 válidas para evitar erros de codificação.