Маркерные трейты
Как Rust понимает, что нужно запретить разделяемый доступ между потоками? Ответ — в двух трейтах:
Send: типTреализуетSend, если безопасно переместить значениеTчерез границу потока.Sync: типTреализуетSync, если безопасно переместить&Tчерез границу потока.
Send и Sync — небезопасные трейты. Компилятор автоматически выведет их для ваших типов, пока они содержат только типы Send и Sync. Их также можно реализовать вручную, когда вы знаете, что это корректно.
This slide should take about 2 minutes.
- Эти трейты можно считать маркерами того, что тип обладает определёнными свойствами потокобезопасности.
- Их можно использовать в обобщённых ограничениях как обычные трейты.