Funções

fn gcd(a: u32, b: u32) -> u32 {
    if b > 0 {
        gcd(b, a % b)
    } else {
        a
    }
}

fn main() {
    println!("gcd: {}", gcd(143, 52));
}
This slide should take about 3 minutes.
  • Os parâmetros de declaração são seguidos por um tipo (o inverso de algumas linguagens de programação) e, em seguida, um tipo de retorno.
  • A última expressão em um corpo de uma função (ou qualquer bloco) torna-se o valor de retorno. Simplesmente omita o ; no final da expressão. A palavra-chave return pode ser usada para retorno antecipado, mas a forma "valor nu" é idiomática no final de uma função (refatore gcd para usar um return).
  • Algumas funções não têm valor de retorno e retornam o 'tipo unitário', (). O compilador irá inferir isso se o tipo de retorno -> () for omitido.
  • Sobrecarga não é suportada - cada função tem uma única implementação.
    • Sempre usa um número fixo de parâmetros. Argumentos padrão não são suportados. Macros podem ser usadas para suportar funções variádicas.
    • Sempre usa um único conjunto de tipos de parâmetros. Estes tipos podem ser genéricos, o que será abordado mais tarde.