title: Is there any way to create an alias of a specific FnMut?
body: <p>I want to work with <code>FnMut(&amp;[f32]) -&gt; f32</code>,
  to not copy/paste full signature, I want to introduce some kind of alias, but</p>
  
  <pre><code>type Boo = FnMut(&amp;[f32]) -&gt; f32;
  
  fn f&lt;F: Boo&gt;(mut f: F) {}
  </code></pre>
  
  <p>Causes a compiler error:</p>
  
  <pre class="lang-none prettyprint-override"><code>error[E0404]: expected trait, found type alias `Boo`
   --&gt; src/main.rs:3:13
    |
  3 |     fn f&lt;F: Boo&gt;(mut f: F) {}
    |             ^^^ type aliases cannot be used for traits
  </code></pre>
  
  <p>I then tried:</p>
  
  <pre><code>trait Boo: FnMut(&amp;[f32]) -&gt; f32 {}
  
  fn f&lt;F: Boo&gt;(mut f: F) {}
  </code></pre>
  
  <p>it compiled, but if I try to use <code>Boo</code> in place of trait in another place:</p>
  
  <pre><code>trait Boo: FnMut(&amp;[f32]) -&gt; f32 {}
  
  struct X(Vec&lt;Box&lt;Boo&gt;&gt;);
  </code></pre>
  
  <p>I get:</p>
  
  <pre class="lang-none prettyprint-override"><code>error[E0191]: the value of the associated type `Output` (from the trait `std::ops::FnOnce`) must be specified
   --&gt; src/main.rs:3:18
    |
  3 | struct X(Vec&lt;Box&lt;Boo&gt;&gt;);
    |                  ^^^ missing associated type `Output` value
  </code></pre>
  
  <p>Is there any way to create an alias of a specific <code>FnMut</code> which I can use 
  instead of <code>FnMut(&amp;[f32]) -&gt; f32</code>?</p>