Arc in Rust stands for Atomic Reference Counting.
Arc in Nim stands for Automatic Reference Counting.
For a shared mutable variable you need to consider ownership:
I'd second threading/smartptrs if you need shared mutable data. SharedPtr uses an atomic reference count which is equivalent with Rust's Arc<T> type. Though SharedPtr like Rust's Arc<T> doesn't provide for locking the data. Though you should be able to pass SharedPtr via a channel. It should just increment the ref count.
Note too that SharedPtr requires your data to be isolate compatible. If the compiler can't verify the data is isolated you may need to copy the data once on initialization. You can use unsafeIsolate if you have a big blog of data that can't be copied and which doesn't make isolate() happy.
@mratsim's work pools are much nicer if you can refactor the problem into a map-reduce style parallelism.