This error indicates a type mismatch in closure arguments.
Erroneous code example:
fn foo<F: Fn(i32)>(f: F) {
}
fn main() {
foo(|x: &str| {});
}
RunThe error occurs because foo
accepts a closure that takes an i32
argument,
but in main
, it is passed a closure with a &str
argument.
This can be resolved by changing the type annotation or removing it entirely if it can be inferred.
fn foo<F: Fn(i32)>(f: F) {
}
fn main() {
foo(|x: i32| {});
}
Run