Pular para conteúdo

Exercícios: Aula 06 - Borrowing e Referências 🤝

🟢 Básico

  1. Imutabilidade por Padrão: Por que o código abaixo não compila? Como você o corrigiria usando referências?
    fn main() {
        let s = String::from("oi");
        mudar(&s);
    }
    fn mudar(texto: &String) {
        texto.push_str("!");
    }
    
  2. Símbolos: Explique a diferença entre usar &String e &mut String como parâmetro de uma função.

🟡 Intermediário

  1. Regra de Ouro: Escreva um código que tente criar duas referências mutáveis para a mesma variável e mostre o erro do compilador. Em seguida, explique por que essa regra existe.
  2. Escopo de Referência: Crie um programa onde você declara uma referência imutável, usa-a, e logo abaixo declara uma referência mutável. Mostre que isso funciona desde que a referência imutável não seja mais usada após a criação da mutável.

🔴 Desafio

5. Simulador de Empréstimo: Crie uma função que receba uma referência mutável a um Vec<i32> e adicione a soma de todos os seus elementos como um novo elemento ao final do vetor.

📚 Gabarito e Soluções Comentadas

Gabarito Explicado ### Questão 1: Imutabilidade por Padrão **Resolução e Implementação:**
// Estrutura de implementação recomendada para Imutabilidade por Padrão
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Borrowing e Referências**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Símbolos **Resolução e Implementação:**
// Estrutura de implementação recomendada para Símbolos
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Borrowing e Referências**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Regra de Ouro **Resolução e Implementação:**
// Estrutura de implementação recomendada para Regra de Ouro
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Borrowing e Referências**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Escopo de Referência **Resolução e Implementação:**
// Estrutura de implementação recomendada para Escopo de Referência
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Borrowing e Referências**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 5: Simulador de Empréstimo **Resolução e Implementação:**
// Estrutura de implementação recomendada para Simulador de Empréstimo
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Borrowing e Referências**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.