>>670
自分でC++の重大な欠点を言ってる気がするんですが…
自ら「区別がつかない」って言っちゃってるじゃん…
Rustならその3つをコンパイラがきちんと区別を付けて
間違ってたらコンパイルエラーとして教えてくれる
C++だと自分の脳内で区別しないとバグになる

他にもC++はキャプチャリストは自由度が高い分書くのがめんどくさいし
キャプチャしない場合でも[]は省略できない
戻り値の型は推論するくせに引数の型は推論してくれない
一行だろうと{}必須。よって戻り値ある場合はreturnも必須
mutableキーワードも必要に応じて推論してくれない
C++だとあまり使うことはないかもしれないが
例外がスローされる場合はそれも書かないといけない

RustならFnOnceとFnMutとFnの違いは推論されるから書き分ける必要はない
キャプチャする環境の所有権を移動したい場合にのみmoveをつけるだけ
move以外は他言語のクロージャと書き方は全く変わらない
確かに他言語のクロージャより仕様は複雑だが
推論がしっかりと効くから書く側はすっきりと書ける

まあクロージャを書く側ではなくて受けとる側(定義側)は
上記の3つをしっかり区別する必要があるので難しいのは認める
これはGCがない言語である限りは仕方のないこと…
とはいえ、ライブラリ作ろうとしない限りは定義側を書くことはないでしょ