error[E0308]: mismatched types
  --> $DIR/issue-2951.rs:3:10
   |
LL | fn foo<T, U>(x: T, y: U) {
   |        -  - found type parameter
   |        |
   |        expected type parameter
LL |     let mut xx = x;
   |                  - expected due to this value
LL |     xx = y;
   |          ^ expected type parameter `T`, found type parameter `U`
   |
   = note: expected type parameter `T`
              found type parameter `U`
   = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
   = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
