Ciri-ciri masing-masing mewakili semakin banyak sifat restriktif tentang closure / fungsi, yang ditunjukkan oleh tanda tangan call_...metode mereka , dan khususnya jenis self:
FnOnce( self) adalah fungsi yang bisa dipanggil sekali
FnMut( &mut self) adalah fungsi yang dapat dipanggil jika memiliki &mutakses ke lingkungannya
Fn( &self) adalah fungsi yang bisa dipanggil jika hanya memiliki &akses ke lingkungannya
Sebuah closure |...| ...akan secara otomatis mengimplementasikan sebanyak mungkin dari itu.
- Implementasi semua closure
FnOnce: closure yang tidak bisa dipanggil sekali tidak pantas diberi nama. Perhatikan bahwa jika closure hanya diimplementasikan FnOnce, ia hanya bisa dipanggil sekali.
- Closure yang tidak keluar dari captures implementnya
FnMut, memungkinkannya dipanggil lebih dari sekali (jika ada akses yang tidak dipisahkan ke objek fungsi).
- Closure yang tidak memerlukan akses unik / dapat berubah ke implement captures-nya
Fn, memungkinkannya untuk dipanggil di mana saja.
Pembatasan ini mengikuti langsung dari jenis selfdan "desugaring" closure ke dalam struct; dijelaskan dalam posting blog saya Menemukan Penutupan di Rust .
Untuk informasi tentang closure, lihat Closures: Anonymous Functions yang Dapat Menangkap Lingkungan Mereka dalam Bahasa Pemrograman Rust .