An Arc<T> object implements the Sync trait (while Rc does not), which indicates to the compiler that it is safe to use concurrently with multiple threads. Any data that has to be shared simultaneously among threads must implement the Sync trait. The ;T ;type is Sync if there is no possibility of data races when passing &T references between threads; in short, &T ;is thread-safe. All simple types, such as integers and floating point numbers, are Sync, as well as all composite types (such as structs, enums, and tuples) that are built with simple types. Any types that only contain things that implement Sync are automatically Sync.