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ó &mut
quyề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 self
và "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 .