Even just at the assembly level, in debug builds it's not zero cost.UnsafeCell::get doesn't get inlined. Presumably a built-in language feature would not have this issue. This kind of thing has lead me to wonder if other features are better off with dedicated syntax, e.g. placement new.