title: Implement a trait for a generic trait
body: <p>In Rust, how to implement a Trait for a generic trait?</p>
  <pre class="lang-rust prettyprint-override"><code>trait One&lt;S&gt; {}
  
  trait Two {}
  
  // fails because S isn't contrained
  impl&lt;S, T&gt; Two for T where T: One&lt;S&gt; {}
  </code></pre>
  <hr />
  <p>To clarify, I'm trying to provide the <code>BitAnd</code> trait
  for a generic <code>Select</code> trait.</p>
  <pre class="lang-rust prettyprint-override"><code>struct Thing&lt;S&gt; {
      field: S,
  }
  
  trait Select&lt;S&gt; {
      fn select(&amp;self, thing: &amp;Thing&lt;S&gt;) -&gt; bool;
  }
  
  struct SelectUnion&lt;S&gt; (Box&lt;dyn Select&lt;S&gt;&gt;, Box&lt;dyn Select&lt;S&gt;&gt;);
  
  // fails because S isn't contrained
  impl&lt;S, T&gt; std::ops::BitAnd for T where T: Select&lt;S&gt; {
      type Output = SelectUnion&lt;S&gt;;
  
      fn bitand(self, rhs: Self) -&gt; Self::Output {
          SelectUnion(Box::new(self), Box::new(rhs))
      }
  }
  </code></pre>