title: What is an auto trait in Rust?
body: <p>Trying to solve the problem described in <a href="https://stackoverflow.com/questions/49710684/trait-bound-sized-is-not-satisfied-for-sized-trait">Trait bound Sized is not satisfied for Sized trait</a>, I found the following code gives the following error:</p>
  
  <pre><code>trait SizedTrait: Sized {
      fn me() -&gt; Self;
  }
  
  trait AnotherTrait: Sized {
      fn another_me() -&gt; Self;
  }
  
  impl AnotherTrait for SizedTrait + Sized {
      fn another_me() {
          Self::me()
      }
  }
  </code></pre>
  
  <pre class="lang-none prettyprint-override"><code>error[E0225]: only auto traits can be used as additional traits in a trait object
   --&gt; src/main.rs:9:36
    |
  9 | impl AnotherTrait for SizedTrait + Sized {
    |                                    ^^^^^ non-auto additional trait
  </code></pre>
  
  <p>But the <a href="https://doc.rust-lang.org/book/second-edition" rel="noreferrer">Rust Book</a> does not mention <code>auto trait</code> at all.</p>
  
  <p>What is an auto trait in Rust and how does it differ from a non-auto trait?</p>