第5章へようこそ。
今日のテーマは「クロージャ」です。
第4章のイテレータで、mapやfilterに小さな関数を渡しました。
あの小さな関数の正体がクロージャです。
クロージャと普通の関数の違いは1つです。
クロージャは、自分が定義された場所の周囲にある変数を捕まえて、自分の中で使える。
関数にはこれができない。
この「周囲の変数を捕まえる」という一点が、クロージャの性質のすべてを決めます。
捕獲は所有権の仕組みと直接噛み合うため、Rustのクロージャは型の表現が細かく分かれている。
今日はその内部構造まで踏み込みます。