title: expected i32, found type parameter, but type parameter is i32
body: <pre><code>pub struct Table&lt;T&gt; {
      table: Vec&lt;Vec&lt;T&gt;&gt;
  }
  
  impl&lt;i32&gt; Display for Table&lt;i32&gt;
      where i32: Display
  {
      fn fmt(&amp;self, f: &amp;mut fmt::Formatter) -&gt; fmt::Result {
          for (index, line) in self.table.iter().enumerate() {
              write!(f, "{}:\t", index+1);
  
              let mut sum = 0i32;
              for task in line {
                  write!(f, "{} ", task);
                  sum += *task;
              }
  
              write!(f, " : {}\n", sum);
          }
  
          Result::Ok(())
      }
  }
  </code></pre>
  
  <p>This code results in a confusing error message:</p>
  
  <pre class="lang-none prettyprint-override"><code>error[E0308]: mismatched types
    --&gt; src/table.rs:48:24
     |
  48 |                 sum += *task;
     |                        ^^^^^ expected i32, found type parameter
     |
     = note: expected type `i32` (i32)
     = note:    found type `i32` (type parameter)
  </code></pre>
  
  <p>And I don't know what to do.</p>