Wrapping borrowable data in Arc just to spawn a thread.
Arc + spawn is the well-trodden path; scoped threads feel exotic.
Arc adds atomic refcount overhead and forces ownership transfer when a borrow is all you need. The data is local; the thread is local; the wrapper is overkill.
Use std::thread::scope — children may borrow from the parent's stack frame and the
scope guarantees they finish before it returns. No Arc, no clone, no extra alloc.
Canonical alternative
concurrency/scoped-threads