◾️はじめに
Rust の 本を見ていて、関数 / クロージャが乗っていて 特に、クロージャは、見慣れないので、まとめておいた方がいいと 思ったので、メモしておく
目次
【1】関数 1)構文 2)サンプル 3)補足:Rustの「&」 【2】クロージャ 1)構文 2)サンプル
【1】関数
https://doc.rust-jp.rs/rust-by-example-ja/fn.html
1)構文
// fn: 関数ポインタ fn <関数名>(<変数1>: <データ型1>, ...) -> <戻り値のデータ型> { ... }
2)サンプル
fn main() { let value1 = is_divisible_by(10, 2); // true let value2 = is_divisible_by(10, 3); // false println!("{}", value1); // true println!("{}", value2); // false let name1 = "Mike"; let name2 = "Nancy"; say_hello(name1); say_hello(name2); } // name: str だとエラー「error[E0277]: the size for values of type `str` cannot be known at compilation time」 fn say_hello(name: &str) { println!("Hello, {}!", name); } // Function that returns a boolean value // ブーリアン型を返す関数 fn is_divisible_by(lhs: u32, rhs: u32) -> bool { // Corner case, early return // 例外的な引数を受けた場合、早めに返す。 if rhs == 0 { return false; } // This is an expression, the `return` keyword is not necessary here // これは式であり、`return`キーワードは必要ではない。 lhs % rhs == 0 }
3)補足:Rustの「&」
* 参照のこと => リソースの所有権を借用すること => 詳細は、以下の関連記事を参照のこと
Rust ~ 保有権 ~
https://dk521123.hatenablog.com/entry/2023/05/04/213726
【2】クロージャ
* その場で定義できる小さな関数 => って言っても、ピンと来ないので、以下を参照
https://doc.rust-jp.rs/rust-by-example-ja/fn/closures.html
// ここがクロージャ(関数を変数 add として定義) let add = |a, b| a + b; println!("{}", add(2, 3)); // 5
1)構文
<変数> = |引数| { ...処理... }
2)サンプル
let outer_var = 42; let closure_annotated = |i: i32| -> i32 { i + outer_var }; rintln!("closure_annotated: {}", closure_annotated(1)); let one = || 1; println!("closure returning one: {}", one());
関連記事
Rust ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/22/234808
Rust ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/11/26/224648
Rust ~ 保有権 ~
https://dk521123.hatenablog.com/entry/2023/05/04/213726
Rust ~ mod ~
https://dk521123.hatenablog.com/entry/2025/11/29/221911