📝
|| ←この棒について
Rustにおいて、この棒はクロージャか演算子のどちらかになります。演算子は割愛。
読み方は、ありませんありました。
vertical barだそうです。(コメントの方ありがとうございました!)
一応「たてぼう」で変換すると出てきます。
クロージャ
縦棒はクロージャの引数リストの開始と終了を示します。引数なしの縦棒のみの場合は、空の引数リストになります。型推論は働きます。
// 引数あり
let add = |a: i32, b: i32| -> i32 {a + b};
println!("{}", add(3, 5)); // 出力: 8
// 引数なし
let closure = || println!("Hello, world!");
closure();
キャプチャ
クロージャが定義したスコープ外にある変数を取り込むこと。
&なしでもコンパイラが自動借用してくれる。
Moveキーワードを入れると、キャプチャした変数の所有権が移動します。
// 不変借用
let x = 10;
let add_x = |a| a + x; // &x
println!("{}", add_x(5));
// 可変借用
let mut x = 10;
let mut add_x = |a| a + x; // &mut x
println!("{}", add_x(5));
// Move(所有権の移動)
let x = 10;
let add_x = move |a| a + x;
println!("{}", add_x(5)); // println!("{}", x)はコンパイルエラー
Discussion
vertical barと呼ぶそうです。(突然コメント失礼しました)
あった!!!wありがとうございます!!
読み方は、ありません。まじか! と思ってRust the Bookを見に行ったら、確かに
「Short-circuiting logical OR」「Closure」しか書いてないんですね、ほぉー
vertical barだそうです!