title: Is there any way to work around an unused type parameter?
body: <p>Code:</p>
  
  <pre><code>trait Trait&lt;T&gt; {}
  
  struct Struct&lt;U&gt;;
  
  impl&lt;T, U: Trait&lt;T&gt;&gt; Struct&lt;U&gt; {}
  </code></pre>
  
  <p>Error:</p>
  
  <pre class="lang-none prettyprint-override"><code>error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predicates
   --&gt; src/main.rs:5:6
    |
  5 | impl&lt;T, U: Trait&lt;T&gt;&gt; Struct&lt;U&gt; {}
    |      ^ unconstrained type parameter
  </code></pre>
  
  <p>It seems that <a href="https://github.com/rust-lang/rfcs/pull/447" rel="nofollow noreferrer">RFC 447</a> prohibits this pattern; is there any way to work around this? I think it could be solved by changing <code>T</code> to an associated type, but that would prevent me from doing multidispatch.</p>