閉包可以通過(guò)三種方式捕獲其環(huán)境啡邑,他們直接對(duì)應(yīng)函數(shù)的三種獲取參數(shù)的方式:獲取所有權(quán)辱志,可變借用和不可變借用臂外。這三種捕獲值的方式分別對(duì)應(yīng)如下三個(gè)Fn trait:
- FnOnce 消費(fèi)從周?chē)饔糜虿东@的變量坯钦,閉包周?chē)淖饔糜虮环Q(chēng)為其 環(huán)境外邓,environment腺律。為了消費(fèi)捕獲到的變量奕短,閉包必須獲取其所有權(quán)并在定義閉包時(shí)將其移動(dòng)進(jìn)閉包。其名稱(chēng)的 Once 部分代表了閉包不能多次獲取相同變量的所有權(quán)的事實(shí)匀钧,所以它只能被調(diào)用一次翎碑。
- FnMut 獲取可變的借用值所以可以改變其環(huán)境
- Fn 從其環(huán)境獲取不可變的借用值