1
Fork 0

Add long error explanation for E0697

This commit is contained in:
Yuki Okushi 2019-10-09 01:59:14 +09:00
parent 321ccbe1db
commit e0ef7767ca
2 changed files with 19 additions and 1 deletions

View file

@ -2001,6 +2001,24 @@ a (non-transparent) struct containing a single float, while `Grams` is a
transparent wrapper around a float. This can make a difference for the ABI.
"##,
E0697: r##"
A closure has been used as `static`.
Erroneous code example:
```compile_fail,E0697
fn main() {
static || {}; // used as `static`
}
```
Closures cannot be used as `static`. They "save" the environment.
Therefore, having a static closure with a static environment doesn't
really make sense since all you can capture inside it would be variables
with static lifetime. In this condition, better use a function directly.
The easiest fix is to remove `static` keyword.
"##,
E0698: r##"
When using generators (or async) all type variables must be bound so a
generator can be constructed.
@ -2187,7 +2205,6 @@ See [RFC 2091] for details on this and other limitations.
E0657, // `impl Trait` can only capture lifetimes bound at the fn level
E0687, // in-band lifetimes cannot be used in `fn`/`Fn` syntax
E0688, // in-band lifetimes cannot be mixed with explicit lifetime binders
E0697, // closures cannot be static
// E0707, // multiple elided lifetimes used in arguments of `async fn`
E0708, // `async` non-`move` closures with parameters are not currently
// supported

View file

@ -6,3 +6,4 @@ LL | static || {};
error: aborting due to previous error
For more information about this error, try `rustc --explain E0697`.