Всем привет! В предыдущей статье мы с вами разобрали обычную проблему C++: десять потоков увеличивают общий счётчик, но из-за гонки данных программа может работать неправильно. В Rust мы с вами постараемся решить ту же самую задачу. Главное отличие заключается не в том, что Rust умеет создавать потоки каким-то лучшим способом, а дело в модели владения и системе типов: компилятор не позволяет безопасному коду произвольно разделять изменяемые данные между потоками. Но это кстати и не значит, что…