Noob question: Cell::get returns a copy of T so why do we need an unsafe scope in the fonction? Copying T means that we could get a copy from UnsafeCell with no risk at all. At no point we are manipulating memory that is currenly being held or modified by somebody else.
It requires an unsafe block because all calls of UnsafeCell::get require an unsafe block. What you have written is simply an argument that the unsafe block is correct — and not that the unsafe block is unnecessary.
In other words: you know that all you're doing with the pointer returned from UnsafeCell::get() is copying it, but the compiler doesn't know that (it could prove that in this case, but not in other lots of cases). You could also return a reference referencing it, which would be invalid.