title: Composite trait not working: the trait `std::io::Read` is not implemented for `[name]`
body: <p>When I make a composite trait (name?) that is made of two other traits, the compiler doesn't seem to detect that the two traits are implemented by that composite trait.</p>
  <p><strong>Here is the code:</strong></p>
  <pre class="lang-rust prettyprint-override"><code>use std::io::{Read, Seek};
  use zip::read::ZipArchive;
  
  trait ReadSeek: Read + Seek {}
  impl&lt;T: Read + Seek&gt; ReadSeek for T {}
  
  pub struct ArchiveZip&lt;'a&gt; {
      path: &amp;'a str,
      archive: ZipArchive&lt;&amp;'a (dyn ReadSeek)&gt;,
  }
  </code></pre>
  <p><strong>And here is the error:</strong></p>
  <pre><code>error[E0277]: the trait bound `&amp;'a (dyn ReadSeek + 'a): std::io::Read` is not satisfied
    --&gt; src/archive/zipfile.rs:12:14
     |
  12 |     archive: ZipArchive&lt;&amp;'a (dyn ReadSeek)&gt;,
     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::io::Read` is not implemented for `&amp;'a (dyn ReadSeek + 'a)`
     | 
    ::: /Users/nhooey/.cargo/registry/src/github.com-1ecc6299db9ec823/zip-0.5.11/src/read.rs:50:26
     |
  50 | pub struct ZipArchive&lt;R: Read + io::Seek&gt; {
     |                          ---- required by this bound in `ZipArchive`
     |
     = note: `std::io::Read` is implemented for `&amp;'a mut (dyn archive::ReadSeek + 'a)`, but not for `&amp;'a (dyn archive::ReadSeek + 'a)`
  
  </code></pre>
  <p>Why does it not detect that the <code>ReadSeek</code> trait doesn't implement both <code>Read</code> and <code>Seek</code>?</p>
  <p>(I omitted the other error message that is also complaining about <code>Seek</code> in the same way.)</p>