error[E0593]: closure is expected to take 2 arguments, but it takes 0 arguments
  --> $DIR/closure-arg-count.rs:15:15
   |
LL |     [1, 2, 3].sort_by(|| panic!());
   |               ^^^^^^^ -- takes 0 arguments
   |               |
   |               expected closure that takes 2 arguments
help: consider changing the closure to take and ignore the expected arguments
   |
LL |     [1, 2, 3].sort_by(|_, _| panic!());
   |                       ^^^^^^

error[E0593]: closure is expected to take 2 arguments, but it takes 1 argument
  --> $DIR/closure-arg-count.rs:17:15
   |
LL |     [1, 2, 3].sort_by(|tuple| panic!());
   |               ^^^^^^^ ------- takes 1 argument
   |               |
   |               expected closure that takes 2 arguments

error[E0593]: closure is expected to take 2 distinct arguments, but it takes a single 2-tuple as argument
  --> $DIR/closure-arg-count.rs:19:15
   |
LL |     [1, 2, 3].sort_by(|(tuple, tuple2)| panic!());
   |               ^^^^^^^ ----------------- takes a single 2-tuple as argument
   |               |
   |               expected closure that takes 2 distinct arguments
help: change the closure to take multiple arguments instead of a single tuple
   |
LL |     [1, 2, 3].sort_by(|tuple, tuple2| panic!());
   |                       ^^^^^^^^^^^^^^^

error[E0593]: closure is expected to take 2 distinct arguments, but it takes a single 2-tuple as argument
  --> $DIR/closure-arg-count.rs:21:15
   |
LL |     [1, 2, 3].sort_by(|(tuple, tuple2): (usize, _)| panic!());
   |               ^^^^^^^ ----------------------------- takes a single 2-tuple as argument
   |               |
   |               expected closure that takes 2 distinct arguments
help: change the closure to take multiple arguments instead of a single tuple
   |
LL |     [1, 2, 3].sort_by(|tuple, tuple2| panic!());
   |                       ^^^^^^^^^^^^^^^

error[E0593]: closure is expected to take 1 argument, but it takes 0 arguments
  --> $DIR/closure-arg-count.rs:23:5
   |
LL |     f(|| panic!());
   |     ^ -- takes 0 arguments
   |     |
   |     expected closure that takes 1 argument
   |
note: required by `f`
  --> $DIR/closure-arg-count.rs:13:1
   |
LL | fn f<F: Fn<usize>>(_: F) {}
   | ^^^^^^^^^^^^^^^^^^^^^^^^
help: consider changing the closure to take and ignore the expected argument
   |
LL |     f(|_| panic!());
   |       ^^^

error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 2 distinct arguments
  --> $DIR/closure-arg-count.rs:26:53
   |
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x| i);
   |                                                     ^^^ ------ takes 2 distinct arguments
   |                                                     |
   |                                                     expected closure that takes a single 2-tuple as argument
help: change the closure to accept a tuple instead of individual arguments
   |
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i);
   |                                                         ^^^^^^^^

error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 2 distinct arguments
  --> $DIR/closure-arg-count.rs:28:53
   |
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i: usize, x| i);
   |                                                     ^^^ ------------- takes 2 distinct arguments
   |                                                     |
   |                                                     expected closure that takes a single 2-tuple as argument
help: change the closure to accept a tuple instead of individual arguments
   |
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i);
   |                                                         ^^^^^^^^

error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 3 distinct arguments
  --> $DIR/closure-arg-count.rs:30:53
   |
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x, y| i);
   |                                                     ^^^ --------- takes 3 distinct arguments
   |                                                     |
   |                                                     expected closure that takes a single 2-tuple as argument

error[E0593]: function is expected to take a single 2-tuple as argument, but it takes 0 arguments
  --> $DIR/closure-arg-count.rs:32:53
   |
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(foo);
   |                                                     ^^^ expected function that takes a single 2-tuple as argument
...
LL | fn foo() {}
   | -------- takes 0 arguments

error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 3 distinct arguments
  --> $DIR/closure-arg-count.rs:35:53
   |
LL |     let bar = |i, x, y| i;
   |               --------- takes 3 distinct arguments
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(bar);
   |                                                     ^^^ expected closure that takes a single 2-tuple as argument

error[E0593]: function is expected to take a single 2-tuple as argument, but it takes 2 distinct arguments
  --> $DIR/closure-arg-count.rs:37:53
   |
LL |     let _it = vec![1, 2, 3].into_iter().enumerate().map(qux);
   |                                                     ^^^ expected function that takes a single 2-tuple as argument
...
LL | fn qux(x: usize, y: usize) {}
   | -------------------------- takes 2 distinct arguments

error[E0593]: function is expected to take 1 argument, but it takes 2 arguments
  --> $DIR/closure-arg-count.rs:40:41
   |
LL |     let _it = vec![1, 2, 3].into_iter().map(usize::checked_add);
   |                                         ^^^ expected function that takes 1 argument

error[E0593]: function is expected to take 0 arguments, but it takes 1 argument
  --> $DIR/closure-arg-count.rs:43:5
   |
LL |     call(Foo);
   |     ^^^^ expected function that takes 0 arguments
...
LL | struct Foo(u8);
   | --------------- takes 1 argument
   |
note: required by `call`
  --> $DIR/closure-arg-count.rs:50:1
   |
LL | fn call<F, R>(_: F) where F: FnOnce() -> R {}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 13 previous errors

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