関数

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.
  • 宣言パラメータの後には型(一部のプログラミング言語と逆)、戻り値の型が続きます。
  • 関数本体(または任意のブロック)内の最後の式が戻り値になります。式の末尾の ; を省略します。return キーワードは早期リターンに使用できますが、関数の最後は「裸の値」の形式にするのが慣用的です(return を使用するには gcd をリファクタリングします)。
  • Some functions have no return value, and return the 'unit type', (). The compiler will infer this if the return type is omitted.
  • オーバーロードはサポートされていません。各関数の実装は 1 つです。
    • 常に固定数のパラメータを受け取ります。デフォルトの引数はサポートされていません。マクロを使用して可変関数をサポートできます。
    • 常に 1 つのパラメータ型セットを受け取ります。これらの型は汎用にすることもできますが、これについては後で説明します。