Error code E0593

You tried to supply an Fn-based type with an incorrect number of arguments than what was expected.

Erroneous code example:

fn foo<F: Fn()>(x: F) { }

fn main() {
    // [E0593] closure takes 1 argument but 0 arguments are required
    foo(|y| { });
}

You have to provide the same number of arguments as expected by the Fn-based type. So to fix the previous example, we need to remove the y argument:

fn foo<F: Fn()>(x: F) { }

fn main() {
    foo(|| { }); // ok!
}