the concept of 'unsafe' loses its value if it's applied to too many things that don't need it. imagine for example `struct X { a: A, ptr: *mut u64 }` or something. Now suppose I want to Send it. Oh no, the pointer prevents it from being Send, now I have to unsafely mark X as Send.
But then suppose