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 &mut
akses 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 self
dan "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 .