title: What is type ascription?
body: <p>Several times I've used the wrong syntax, such as forgetting to use <code>let</code> in this example:</p>
  
  <pre><code>let closure_annotated = |value: i32| -&gt; i32 {
      temp: i32 = fun(5i32);
      temp + value + 1
  };
  </code></pre>
  
  <blockquote>
    <pre class="lang-none prettyprint-override"><code>error[E0658]: type ascription is experimental (see issue #23416)
   --&gt; src/main.rs:3:9
    |
  3 |         temp: i32 = fun(5i32);
    |         ^^^^^^^^^
  </code></pre>
  </blockquote>
  
  <p>I know that this problem is solved by using <code>let</code>, but what is "type ascription" and what is its use?</p>
  
  <p>I found <a href="https://github.com/rust-lang/rust/issues/23416" rel="noreferrer">issue #23416</a> and <a href="https://github.com/rust-lang/rust/blob/1.33.0/src/libsyntax/feature_gate.rs#L250-L251" rel="noreferrer">the feature gate for type ascription</a>, but I could not understand what "type ascription" is or what is its purpose.</p>