回答:
トレイトはそれぞれ、call_...メソッドのシグネチャ、特に次のタイプによって示される、クロージャ/関数に関するますます制限的なプロパティを表しますself。
FnOnce(self)は一度だけ呼び出すことができる関数ですFnMut(&mut self)&mut環境にアクセスできる場合に呼び出すことができる関数Fn(&self)は&、環境へのアクセス権がある場合にのみ呼び出すことができる関数ですクロージャー|...| ...はそれらを可能な限り自動的に実装します。
FnOnceます。一度呼び出すことができないクロージャーは名前に値しません。クロージャーが実装FnOnceするのは1回だけであることに注意してください。FnMutクロージャーは、それらを複数回呼び出せるようにします(関数オブジェクトへのエイリアスのないアクセスがある場合)。Fn本質的にどこからでも呼び出せるようにします。これらの制限はself、クロージャのタイプと構造体への「脱糖化」から直接従います。私のブログ記事「Frusting Closure in Rust」で説明されています。
クロージャの詳細については、「クロージャ:Rustプログラミング言語の環境をキャプチャできる無名関数」を参照してください。
FnOnceこれは一度しか呼び出せないということですか?
FnOnce。