What is type ascription?
<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>