Error code E0631
This error indicates a type mismatch in closure arguments.
Erroneous code example:
fn foo<F: Fn(i32)>(f: F) { } fn main() { foo(|x: &str| {}); }
The 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| {}); }