unsafe does not turn off the borrow checker. It unlocks exactly five abilities:
- dereference a raw pointer
- call an
unsafefunction - access a
static mut - implement an
unsafetrait - access a union field
Everything else — ownership, borrowing, lifetimes, type checking — applies inside an unsafe block exactly as outside it.
