about summary refs log tree commit diff
path: root/src/librustc_error_codes/error_codes
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustc_error_codes/error_codes')
-rw-r--r--src/librustc_error_codes/error_codes/E0631.md26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/librustc_error_codes/error_codes/E0631.md b/src/librustc_error_codes/error_codes/E0631.md
index ad419f82250..6188d5f61a7 100644
--- a/src/librustc_error_codes/error_codes/E0631.md
+++ b/src/librustc_error_codes/error_codes/E0631.md
@@ -3,27 +3,25 @@ This error indicates a type mismatch in closure arguments.
 Erroneous code example:
 
 ```compile_fail,E0631
-fn test_strings(string_vec: Vec<String>) -> Vec<bool> {
-  string_vec
-    .iter()
-    .map(|arg: &i32| arg.eq("Test String"))
-    .collect()
+fn foo<F: Fn(i32)>(f: F) {
+}
+
+fn main() {
+    foo(|x: &str| {});
 }
 ```
 
-The closure passed to `map` expects a `&String` argument, since `some_vec`
-has the type `Vec<String>`.
-However, the closure argument is annotated as an `&i32`, which does not match
-the type of the iterable.
+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 test_strings(string_vec: Vec<String>) -> Vec<bool> {
-  string_vec
-    .iter()
-    .map(|arg| arg.eq("Test String"))
-    .collect()
+fn foo<F: Fn(i32)>(f: F) {
+}
+
+fn main() {
+    foo(|x: i32| {});
 }
 ```