rust勉強しはじめたばかり、C,C++はだいぶ昔少し経験がある程度

Cとかじゃ、constなpointerは、変数自体がconstと、指ししめす対象自体がconstである場合があり
const T * const p;
みたいな宣言があったが

Rustはデフォルトでイミュータブルなのはわかるけど、mutを付けると、変数自体も指し示す対象もmutableになってしまう?

let mut v = vec![1, 2, 3];
v.push(2);
v = vec![4,5,6];

どっちか一方を禁止する方法とかあるのですか?