You should note that *const and *mut isn't that really different in Rust. They can trivially be convertible in both directions, even in safe context. *const doesn't guarantee about immutability, and *mut also doesn't do so about exclusive access. They're also treated equally in miri UB checker.
Thanks for your reply, I'm thinking a lot of the issues discussed here are important for beginners, so why not put them into the documentation?Or did I not find the correct document?
Except for FFI, beginners shouldn't be using raw pointers! The standard library has a wide number of safe, compostable abstractions for you to use, like Box, Rc, and RefCell.
In all my time writing rust I can only think of one time I've used raw pointers for something other than FFI, and that was to pair them with a PhantomData<&mut T> in some type that represented a mutable borrow of non-contiguous data (a matrix slice).