関数ポインタとクロージャ関数ポインタは環境を持たないクロージャのようなものです。そのため、クロージャを引数として期待している関数に関数ポインタを渡すことができます。call_with_one(&add_one);クロージャを返す関数を用いたスタイルのコードでは、クロージャを返すことは非常によく見られます。クロージャを返すことを試みた場合、エラーが発生します。これは一見奇妙に思われますが、理解することができます。^関数から何かを返すにあたって、Rustは返り値の型のサイズを知る必要があります。何かにサイズを与える簡単な方法は、それに対する参照を取得する方法です、参照は既知のサイズを持っています。^~~~~~~~~~~~~~~~~ふむ。これはリファレンスを利用したので、ライフタイムを指定する必要が有るためです。使ってしまっているということを伝えています。それに準ずるものを実装するため、それぞれの型は匿名となります。それらの型はそれらのクロージャのためだけに存在します。上のコードではそうなっていないということについても指摘しています。ライフタイムをオブジェクトに割り当てることはできません。ボックス化することで「トレイトオブジェクト」を返すという方法を取ります。^~~~~~~~~~~以前説明したように、クロージャはその環境を借用します。環境の借用はスタックフレームと同じライフタイムを持っています。することで、新しいスタックフレームをクロージャのために生成します。ボックス化することによって、既知のサイズとなり、現在のスタックフレームから抜けることが可能になります。