On Sun, Jan 18, 2026 at 03:39:40PM +0000, Gary Guo wrote: [...] > >> > >> How about *const T? > >> > > > > In general I want to avoid const raw pointers since it provides very > > little extra compared to mut raw pointers. For compiler optimization, > > provenenace is more important than "const vs mut" modifier, for > > dereference, it's unsafe anyway and users need to provide reasoning > > (including knowing the provenance and other accesses may happen to the > > same address), so I feel the type difference of "*const T" vs "*mut T" > > doesn't do anything extra either. > > > > Think about it, in Rust std, there are two pointer types only maps to > > "*mut T": NonNull<T> (as_ptr() returns a `*mut T`) and AtomicPtr<T> > > (as_ptr() returns a `*mut *mut T`). And there is no type like > > NonNullConst<T> and AtomicConstPtr<T>. This is a lint to me that we may > > not need to support `*const T` in most cases. > > Actually `NonNull` is internally `*const T`, because it's covariant, unlike > `*mut T` which is invariant. >
Ah, right! > Now, for atomics, it's less likely that you actually want covariance. So this > difference matters less. > Agreed. > > > > But maybe I'm missing something? If you have a good reason, we can > > obviously add the support for `*const T`. > > It just feels that it is somewhat inconsistent. There's no good motivation > right > now. I am fine to leave it out and add when needed. > Yeah, we can also add it later. Thanks! Regards, Boqun > Best, > Gary

