What is the difference between (a) and (b) in the following
let a: Box<i32> = Box::new(1); // (a)
let mut a: Box<i32> = Box::new(1); // (b)
a = Box::new(2); // (c)
*a = 3; // (d)
(a) is equivalent to the following in C++
int const * const a = new int(1);
and (b) is equivalent to
int * a = new int(1);
In Rust, is there anything equivalent to
int const * a = new int(1); // this allows (c) but not (d)
or
int * const a = new int(1); // this allows (d) but not (c)