Generic impl Write for Arc<T> where &T: Write

std::fs::File has this impl that allows to use it inside Arc:

impl Write for Arc<File> {
}

This impl is possible because &File also implements Write:

impl Write for &File {
}

If I have my own Write implementation for &MyStruct, what stops me from using Arc<MyStruct> as Write?

My idea is to add generic impl:

impl<T> Write for Arc<T> where &T: Write, T: Sync {
}

See libs-team#504, especially the history of why a generic impl isn't always correct.