EDIT: s/data races/race conditions
EDIT: s/data races/race conditions
The borrow checker (in safe rust) always[0] prevents data races. It can't, however, prevent race conditions (but neither can pony do[1])
I typically think of a race condition an issue with concurrency where data might be modified by another thread which causes the program to return incorrect results.
Data race vs race condition:
A race condition happens when data/state is mutated because of the order in which concurrent processes occur. This could happen with threads, message passing, or many other ways.
I think this is distinct from deadlock which occurs when there is at least one circular dependency in the order when different "processes" must perform their operations.
As long as those data races originate from threads, it cannot prevent data races across processes, for example:
- Modifying the same file location
- Modifying the same table cell without transactions
- Talking to the same IO port
- Data sharing between CPU and GPU