ลักษณะแต่ละอย่างแสดงถึงคุณสมบัติที่เข้มงวดมากขึ้นเกี่ยวกับการปิด / ฟังก์ชันซึ่งระบุโดยลายเซ็นของcall_...
วิธีการและโดยเฉพาะอย่างยิ่งประเภทของself
:
FnOnce
( self
) เป็นฟังก์ชันที่สามารถเรียกใช้ได้ครั้งเดียว
FnMut
( &mut self
) เป็นฟังก์ชันที่สามารถเรียกใช้ได้หากมี&mut
การเข้าถึงสภาพแวดล้อม
Fn
( &self
) เป็นฟังก์ชันที่สามารถเรียกใช้ได้หากมีเพียง&
การเข้าถึงสภาพแวดล้อมเท่านั้น
การปิด|...| ...
จะดำเนินการโดยอัตโนมัติให้มากที่สุดเท่าที่จะทำได้
- การปิดทั้งหมดใช้
FnOnce
: การปิดที่ไม่สามารถเรียกได้ครั้งเดียวไม่สมควรได้รับชื่อ โปรดทราบว่าหากการปิดดำเนินการFnOnce
เพียงครั้งเดียวสามารถเรียกใช้ได้เพียงครั้งเดียว
- การปิดที่ไม่เคลื่อนออกจากการใช้งานการดักจับ
FnMut
ทำให้สามารถเรียกได้มากกว่าหนึ่งครั้ง (หากมีการเข้าถึงวัตถุฟังก์ชันโดยไม่ได้กำหนด)
- การปิดที่ไม่ต้องการการเข้าถึงที่ไม่ซ้ำกัน / เปลี่ยนแปลงได้ในการใช้งานการจับภาพ
Fn
ทำให้สามารถเรียกได้ทุกที่
ข้อ จำกัด เหล่านี้เป็นไปตามโดยตรงจากประเภทself
และ "desugaring" ของการปิดเป็นโครงสร้าง; อธิบายไว้ในบล็อกของฉันโพสต์Finding ปิดใน Rust
สำหรับข้อมูลเกี่ยวกับการปิดดูปิด: ฟังก์ชั่นที่ไม่ระบุชื่อที่สามารถจับสภาพแวดล้อมของพวกเขาในสนิมโปรแกรมภาษา