Um Pequeno Exemplo

Aqui está um pequeno programa de exemplo em Rust:

fn main() {              // Ponto de entrada do programa
    let mut x: i32 = 6;  // Atribuição de uma variável mutável
    print!("{x}");       // Macro para escrever na tela, como printf
    while x != 1 {       // Sem parênteses ao redor de expressões
        if x % 2 == 0 {  // Matemática como em outras linguagens
            x = x / 2;
        } else {
            x = 3 * x + 1;
        }
        print!(" -> {x}");
    }
    println!();
}

O código implementa a conjectura de Collatz: acredita-se que o loop sempre termina, mas isso ainda não está provado. Edite o código e tente diferentes entradas.

Pontos chave:

  • Explique que todas as variáveis tipadas estaticamente. Tente remover i32 para acionar a inferência de tipo. Em vez disso, tente com i8 e cause um estouro de número inteiro (integer overflow) em tempo de execução.

  • Altere let mut x para let x, discuta o erro do compilador.

  • Mostre como print! cause um erro de compilação se os argumentos não corresponderem à string de formato.

  • Mostre como você precisa usar {} como um espaço reservado se quiser imprimir uma expressão que seja mais complexa do que apenas uma única variável.

  • Mostre aos alunos a biblioteca padrão (standard library), mostre como pesquisar std::fmt, o qual possui as regras da mini-linguagem de formatação. É importante que os alunos se familiarizem com pesquisas na biblioteca padrão.

    • Em um shell rustup doc std::fmt abrirá um navegador na documentação std::fmt local.