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