armanriazirustusaferawpointer

Unsafe Rust has two new types called raw pointers that are similar to references. As with references, raw pointers can be immutable or mutable and are written as *const T and *mut T, respectively. The asterisk isn’t the dereference operator; it’s part of the type name. In the context of raw pointers, immutable means that the pointer can’t be directly assigned to after being dereferenced.
    let mut num = 5;
    let r1 = &num as *const i32;
    let r2 = &mut num as *mut i32;
Notice that we don’t include the unsafe keyword in this code. We can create raw pointers in safe code; we just can’t dereference raw pointers outside an unsafe block, as you’ll see in a bit.    
    unsafe {
        println!("r1 is: {}", *r1);
        println!("r2 is: {}", *r2);
    }

   let address = 0x012345usize;
   let r = address as *const i32;
   
Creating a raw pointer to an arbitrary memory address
ArmanRiazi