Understanding thread safety in Rust involves grappling with concepts like the borrowing checker and the absence of a runtime. When multiple threads need to access shared data, using an arc allows for safe memory sharing by keeping track of how many functions are using a value, preventing premature memory deallocation. This approach is essential for managing in-memory storage effectively in asynchronous environments.