Spec Sistemas Com Rust • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 05.1 — Transferência de Posse (Move) em Tipos alocados no Heap (String)

Contexto: Transferência de Posse (Move) em Tipos alocados no Heap (String) no contexto de O Sistema de Ownership (Propriedade) e Move Semantics.

Requisitos de Execução:

  1. Demonstrar que atribuir s2 = s1 invalida s1 no compilador do Rust.

Resultado Esperado

Semântica de Move verificada: Tentativa de uso pós-move prevenida em tempo de compilação.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_1_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - O Sistema de Ownership (Propriedade) e Move Semantics
🔑 Gabarito de Código & Solução Comentada
// ownership_move.rs
fn main() {
    let s1 = String::from("Recurso Exclusivo");
    let s2 = s1; // Move de ownership
    // println!("{}", s1); // Erro de compilacao: value borrowed after move
    println!("Dono atual da string: {}", s2);
}

🔍 Nível 2: Prática

Problema 05.2 — Tipos com a Trait Copy (Alocação no Stack)

Contexto: Tipos com a Trait Copy (Alocação no Stack) no contexto de O Sistema de Ownership (Propriedade) e Move Semantics.

Requisitos de Execução:

  1. Demonstrar que tipos escalares primitivos (i32, f64, bool) implementam Copy e não sofrem move.

Resultado Esperado

Tipos escalares duplicados por valor na pilha.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_2_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - O Sistema de Ownership (Propriedade) e Move Semantics
🔑 Gabarito de Código & Solução Comentada
// copy_trait.rs
fn main() {
    let x = 42;
    let y = x; // Copia de valor no stack
    println!("x: {} | y: {} (Ambos validos)", x, y);
}

⚡ Nível 3: Integração

Problema 05.3 — Passagem e Devolução de Ownership em Funções

Contexto: Passagem e Devolução de Ownership em Funções no contexto de O Sistema de Ownership (Propriedade) e Move Semantics.

Requisitos de Execução:

  1. Passar String para uma função que retorne a string modificada devolvendo o ownership.

Resultado Esperado

Posse de dados transferida para função e devolvida com sucesso.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_3_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - O Sistema de Ownership (Propriedade) e Move Semantics
🔑 Gabarito de Código & Solução Comentada
// ownership_funcoes.rs
fn processar_string(mut s: String) -> String {
    s.push_str(" [PROCESSADO]");
    s
}

fn main() {
    let texto = String::from("Lote 4");
    let resultado = processar_string(texto);
    println!("{}", resultado);
}

🏆 Nível 4: Desafio Corporativo

Problema 05.4 — Clonagem Explícita com .clone() e Análise de Custo de Heap

Contexto: Clonagem Explícita com .clone() e Análise de Custo de Heap no contexto de O Sistema de Ownership (Propriedade) e Move Semantics.

Requisitos de Execução:

  1. Criar cópia profunda no heap utilizando .clone() de forma consciente para dados que não implementam Copy.

Resultado Esperado

Clonagem profunda executada com alocação explícita.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_05_4_SeuNome
  2. Envie na tarefa: Atividade Cap 05 - O Sistema de Ownership (Propriedade) e Move Semantics
🔑 Gabarito de Código & Solução Comentada
// clone_explicit.rs
fn main() {
    let original = String::from("Configuracao Base");
    let copia = original.clone();
    println!("Original: {} | Clone: {}", original, copia);
}

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos