# Seperating NonNull into NonNullMut and NonNullConst

**URL:** <https://internals.rust-lang.org/t/seperating-nonnull-into-nonnullmut-and-nonnullconst/11083>\
**Category:** Uncategorized\
**Created:** [October 10, 2019, 12:28pm UTC](https://internals.rust-lang.org/t/seperating-nonnull-into-nonnullmut-and-nonnullconst/11083 "2019-10-10T12:28:06Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![matklad](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/matklad/32/12266_2.png) [@matklad](https://internals.rust-lang.org/u/matklad)\
**Post date:** [October 10, 2019, 2:40pm UTC](https://internals.rust-lang.org/t/seperating-nonnull-into-nonnullmut-and-nonnullconst/11083/2 "2019-10-10T14:40:54Z")

</div>

Note that there isn't a lot of difference between `*const T` and `*mut T` either, it's mostly the lint: [What is the real difference between `*const T` and `*mut T` raw pointers?](https://internals.rust-lang.org/t/what-is-the-real-difference-between-const-t-and-mut-t-raw-pointers/6127/20)

What matters for mutability is pointer provenience: did you get it from `&T`, `&mut T` or `&UnsafeCell<T>`.

---

_[View the full topic](https://internals.rust-lang.org/t/seperating-nonnull-into-nonnullmut-and-nonnullconst/11083)._
