Mỗi đặc điểm đại diện cho các thuộc tính ngày càng hạn chế hơn về các bao đóng / hàm, được biểu thị bằng các chữ ký của call_...phương thức của chúng , và đặc biệt là kiểu self:
FnOnce( self) là các hàm có thể được gọi một lần
FnMut( &mut self) là các hàm có thể được gọi nếu chúng có &mutquyền truy cập vào môi trường của chúng
Fn( &self) là các hàm có thể được gọi nếu chúng chỉ có &quyền truy cập vào môi trường của chúng
Một quá trình đóng |...| ...sẽ tự động triển khai nhiều nhất có thể.
- Tất cả các bao đóng đều triển khai
FnOnce: một bao đóng không thể được gọi một lần sẽ không xứng đáng với tên. Lưu ý rằng nếu một bao đóng chỉ thực hiện FnOnce, nó chỉ có thể được gọi một lần.
- Các đóng cửa không di chuyển ra khỏi triển khai chụp của chúng
FnMut, cho phép chúng được gọi nhiều lần (nếu có quyền truy cập không định hướng vào đối tượng hàm).
- Các cửa sổ đóng cửa không cần quyền truy cập duy nhất / có thể thay đổi đối với triển khai chụp của chúng
Fn, cho phép chúng được gọi về cơ bản ở mọi nơi.
Những hạn chế này theo sau trực tiếp từ loại selfvà "gỡ bỏ" các đóng thành cấu trúc; được mô tả trong bài đăng trên blog của tôi Tìm kiếm Đóng cửa trong Rust .
Để biết thông tin về việc đóng cửa, hãy xem Đóng cửa: Các hàm ẩn danh có thể nắm bắt môi trường của chúng bằng ngôn ngữ lập trình Rust .