Район может гарантировать, что итератор не переживет текущий кадр стека, в отличие от того, что я предполагаю thread::spawn
в первом примере кода. В частности, par_iter
под колпаком использует что-то вроде функции scope
Района, которая позволяет порождать единицу работы, которая «прикреплена» к стеку и присоединится до того, как стек закончится.
Поскольку Rayon может гарантировать (через границы времени жизни, с точки зрения пользователя), что задачи / потоки объединяются до выхода из функции, вызывающей par_iter
, он может предоставить этот API, который более эргономичен для использования, чем стандартная библиотека thread::spawn
.
Район подробно описывает это в документации к функции scope
.