Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0593: closure is expected to take 0 arguments, but it takes 1 argument
What it meansYou tried to supply an Fn-based type with an incorrect number of arguments than what was expected.
What rustc prints
error[E0593]: closure is expected to take 0 arguments, but it takes 1 argument
--> main.rs:5:5
|
5 | foo(|y| { });
| ^^^^---^^^^^
| | |
| | takes 1 argument
| expected closure that takes 0 argumentsReal output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
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!
}From rustc --explain E0593 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0308mismatched types
- E0277the trait bound is not satisfied
- E0599no method named X found in the current scope
- E0433failed to resolve
- E0587type has conflicting packed and align representation hints
- E0588packed type cannot transitively contain a `#[repr(align)]` type
- E0600cannot apply unary operator `!` to type `Question`
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?