I am reading https://doc.rust-lang.org/book/ch20-02-multithreaded.html and it states the following:
...taking a job off the channel queue involves mutating the receiver, so the threads need a safe way to share and modify receiver; otherwise, we might get race conditions...
However when I look at the Receiver::recv docs it shows that the method takes an immutable reference, so why is the book implying that: Receiving from the Receiver mutates it and thus should be Mutex'd?
Would it not work correctly just behind an Arc (no mutex)?