Please reference the code below, for the line which has been commented out. It cannot be compiled by the Rust compiler, meaning we need to specify the constness like *const i32 explicitly for a raw pointer in Rust. But for a reference that is immutable to its pointee, we don't need to specify the constness explicitly like with a raw pointer. So, why does Rust not use a more symmetrical way to express the same meaning for both references and raw pointers, since the reference is actually a pointer under the hood?
fn main() {
let x1: &i32;
let x2: &mut i32;
// let p1: *i32; // This line doesn't compile!!!
let p1: *const i32; // we need to specify the constness explicitly.
let p2: *mut i32;
}