関数

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

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

fn main() {
    dbg!(gcd(143, 52));
}
  • 宣言では、パラメータの後に型を書き(一部のプログラミング言語とは逆)、次に戻り値の型を書きます。
  • 関数本体(または任意のブロック)の最後の式が戻り値になります。式の末尾の ; を省略するだけです。早期リターンには return キーワードを使用できますが、関数の末尾では「値だけを書く」形式が慣用的です(gcdreturn を使うようにリファクタリングしてみてください)。
  • 一部の関数には戻り値がなく、「ユニット型」である () を返します。戻り値の型を省略した場合、コンパイラがこれを推論します。
  • オーバーロードはサポートされていません – 各関数に実装は 1 つだけです。
    • 常に固定個数のパラメータを取ります。デフォルト引数はサポートされていません。可変長関数をサポートするためにマクロを使うことはできます。
    • 常に 1 組のパラメータ型だけを取ります。これらの型はジェネリックにすることができ、これについては後で扱います。