未验证 提交 128fa2b9 编写于 作者: M Manish Goregaokar 提交者: GitHub

Rollup merge of #72071 - PankajChaudhary5:ErrorCode-E0687, r=davidtwco

Added detailed error code explanation for issue E0687 in Rust compiler.

Added proper error explanation for issue E0687 in the Rust compiler.
Error Code E0687

Sub Part of Issue #61137

r? @GuillaumeGomez
......@@ -382,6 +382,7 @@
E0669: include_str!("./error_codes/E0669.md"),
E0670: include_str!("./error_codes/E0670.md"),
E0671: include_str!("./error_codes/E0671.md"),
E0687: include_str!("./error_codes/E0687.md"),
E0689: include_str!("./error_codes/E0689.md"),
E0690: include_str!("./error_codes/E0690.md"),
E0691: include_str!("./error_codes/E0691.md"),
......@@ -613,7 +614,6 @@
E0640, // infer outlives requirements
// E0645, // trait aliases not finished
E0667, // `impl Trait` in projections
E0687, // in-band lifetimes cannot be used in `fn`/`Fn` syntax
E0688, // in-band lifetimes cannot be mixed with explicit lifetime binders
// E0694, // an unknown tool name found in scoped attributes
// E0702, // replaced with a generic attribute input check
......
In-band lifetimes cannot be used in `fn`/`Fn` syntax.
Erroneous code examples:
```compile_fail,E0687
#![feature(in_band_lifetimes)]
fn foo(x: fn(&'a u32)) {} // error!
fn bar(x: &Fn(&'a u32)) {} // error!
fn baz(x: fn(&'a u32), y: &'a u32) {} // error!
struct Foo<'a> { x: &'a u32 }
impl Foo<'a> {
fn bar(&self, x: fn(&'a u32)) {} // error!
}
```
Lifetimes used in `fn` or `Fn` syntax must be explicitly
declared using `<...>` binders. For example:
```
fn foo<'a>(x: fn(&'a u32)) {} // ok!
fn bar<'a>(x: &Fn(&'a u32)) {} // ok!
fn baz<'a>(x: fn(&'a u32), y: &'a u32) {} // ok!
struct Foo<'a> { x: &'a u32 }
impl<'a> Foo<'a> {
fn bar(&self, x: fn(&'a u32)) {} // ok!
}
```
......@@ -24,3 +24,4 @@ LL | fn bar(&self, x: fn(&'a u32)) {}
error: aborting due to 4 previous errors
For more information about this error, try `rustc --explain E0687`.
......@@ -12,3 +12,4 @@ LL | fn baz(x: &impl Fn(&'a u32)) {}
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0687`.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册