title: Why is the mutability of a variable not reflected in its type signature in Rust?
body: <p>As I understand, mutability is not reflected in variables type signature. For example, these two references have the same type signature <code>&amp;i32</code>:</p>
  
  <pre class="lang-rust prettyprint-override"><code>let ref_foo : &amp;i32 = &amp;foo;
  let mut ref_bar : &amp;i32 = &amp;bar;
  </code></pre>
  
  <p>Why is this the case? It seems like a pretty major oversight. I mean, even C/C++ does this more explictly with having two <code>const</code> to indicate that we have a <code>const</code> pointer to <code>const</code> data:</p>
  
  <pre class="lang-cpp prettyprint-override"><code>const int * const ptr_foo = &amp;foo;
  const int * ptr_bar = &amp;bar;
  </code></pre>
  
  <p>Is there a better way of thinking about this?</p>