rust: 関数定義
関数定義の基本的な構文について学習した。
基本構文
fn 関数名([引数: 引数の型, ]) [-> 戻り値の型] { 関数本体 }
例1)
最後に計算された式の結果が返り値となる。
fn hello_world(name: String) -> String { // 以降の行に処理がない場合は、末尾にセミコロンは付けずに式だけ記述する format!("Hello {}!", name) }
戻り値が () ユニットの場合は、戻り値の型指定を省略可能。
C言語などのvoidのようなものか?
例2)
fn hello_world(name: String) { println!("{}", name); }
例3)
戻り値として () ユニットを返すのではなく、本当に値を返さない関数は、
戻り値のところに ! をつける。このような関数を発散する関数と呼ぶ。
発散する関数は呼び出し元に制御を返さない。
fn end_func() -> ! { std::process::exit(0); }