fn main() {
let n = 42;
// a raw pointer is just an address, with no borrow checking
let p: *const i32 = &n;
// reading through it requires an unsafe block
unsafe {
println!("{}", *p);
}
}an address; dereffing needs unsafe