This code compiles in C++:
int x = 5;
int *const px = &x;
int *const *const ppx = &px;
int const *const *const cppx = ppx;
So I tried to do the equivalent in Rust:
let mut x: i32 = 5;
let px: &mut i32 = &mut x;
let ppx: &&mut i32 = &px;
let cppx: &&i32 = ppx;
However, this fails to compile:
error[E0308]: mismatched types
--> src/main.rs:5:23
|
5 | let cppx: &&i32 = ppx;
| ----- ^^^ types differ in mutability
| |
| expected due to this
|
= note: expected reference `&&i32`
found reference `&&mut i32`
Why isn't it allowed?