Mutex превращает Send в Send+SyncА
Arc мог бы превращать Sync в Sync+Send, но требует Send тоже, только потому что можете вытащить T оттуда в другом потоке через get_mut и try_unwrap.Вот вам и недостаток выразительности языка. Нет конструкции что бы сказать
T: Send для этой функции если Self передавали в другой поток.Если прям очень надо, можно сделать свой
Ark, который будет Send+Sync where T: Sync, но без возможности получить T или &mut T из него