I am reading about Rust's ownership and it turns out that Rust's ownership, reference, and borrow features focus on preventing data race via some restrictions in reference mutability.
I wonder why Rust forces us to obey these restrictions? Is that true that Rust will execute my code automatically in multithreaded mode? Otherwise, why do I have to care about the restrictions even if my code only executes in single-threaded mode by default?