ویژگیهای نشانگر
Rust چگونه میداند که دسترسی مشترک در سراسر threadها را ممنوع میکند؟ پاسخ در دو trait است:
-
Send
: در صورتی که جابجاییT
در امتداد thread boundary ایمن باشد، تایپT
از جنسSend
است. -
Sync
: در صورتی که جابجایی یک&T
در سراسر یک thread boundary ایمن باشد، یک تایپT
از جنسSync
است.
Send
و Sync
[ویژگیهای ناامن] هستند (../../unsafe-rust/unsafe-traits.md). کامپایلر بهطور خودکار آنها را برای تایپهای شما مشتق میکند تا زمانی که فقط دارای انواع Send
و Sync
باشند. شما همچنین می توانید آنها را به صورت دستی پیاده سازی کنید بهخصوص زمانی که می دانید مقدار آن معتبر است.
This slide should take about 2 minutes.
- میتوان این traitها را به عنوان نشانگرهایی در نظر گرفت که نوعی ویژگی thread-safety خاصی را دارد.
- آنها را میتوان در محدودیتهای generic به عنوان trait عادی استفاده کرد.