Creating an explicitly invalid non-null pointer āby defaultā (which often means āimplicitlyā as well, since several convenience APIs hide calls to default) seems like a Bad⢠idea.
For integer types, the default value is zero, but for pointers, even the potentially null *const T and *mut T donāt implement Default as ptr::null(). If even this was deemed a footgun (and we know null pointers are), then a non-null pointer ā which canāt be zero ā defaulting to something invalid is even more so.
On a possibly related note, it doesnāt really fit the philosophy of a default value, either. If one has a pointer, oneās first thought is not that āOh, this is surely just a dangling pointer pointing maybe nowhere, maybe somewhere unspecifiedā. Itās not what you want your pointers to be by default. Itās a special case that is useful for implementing data structures in an optimized manner, but surely the construction of an explicitly dangling pointer requires thought, care, and extra consideration. Itās not the very first tool one should reach for.