Add error code explanation for E0477
This commit is contained in:
parent
774a4bd4f4
commit
751fe7c43d
8 changed files with 54 additions and 3 deletions
|
@ -238,6 +238,7 @@ E0463: include_str!("./error_codes/E0463.md"),
|
|||
E0466: include_str!("./error_codes/E0466.md"),
|
||||
E0468: include_str!("./error_codes/E0468.md"),
|
||||
E0469: include_str!("./error_codes/E0469.md"),
|
||||
E0477: include_str!("./error_codes/E0477.md"),
|
||||
E0478: include_str!("./error_codes/E0478.md"),
|
||||
E0491: include_str!("./error_codes/E0491.md"),
|
||||
E0492: include_str!("./error_codes/E0492.md"),
|
||||
|
@ -531,7 +532,6 @@ E0745: include_str!("./error_codes/E0745.md"),
|
|||
E0474, // captured variable `..` does not outlive the enclosing closure
|
||||
E0475, // index of slice outside its lifetime
|
||||
E0476, // lifetime of the source pointer does not outlive lifetime bound...
|
||||
E0477, // the type `..` does not fulfill the required lifetime...
|
||||
E0479, // the type `..` (provided as the value of a type parameter) is...
|
||||
E0480, // lifetime of method receiver does not outlive the method call
|
||||
E0481, // lifetime of function argument does not outlive the function call
|
||||
|
|
45
src/librustc_error_codes/error_codes/E0477.md
Normal file
45
src/librustc_error_codes/error_codes/E0477.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
The type does not fulfill the required lifetime.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0477
|
||||
use std::sync::Mutex;
|
||||
|
||||
struct MyString<'a> {
|
||||
data: &'a str,
|
||||
}
|
||||
|
||||
fn i_want_static_closure<F>(a: F)
|
||||
where F: Fn() + 'static {}
|
||||
|
||||
fn print_string<'a>(s: Mutex<MyString<'a>>) {
|
||||
|
||||
i_want_static_closure(move || { // error: this closure has lifetime 'a
|
||||
// rather than 'static
|
||||
println!("{}", s.lock().unwrap().data);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
In this example, the closure doesn't satisfy the `'static` lifetime constraint.
|
||||
To fix this kind of error, you need to double check lifetime of the type. Here,
|
||||
we can fix this problem by giving `s` a static lifetime:
|
||||
|
||||
```
|
||||
use std::sync::Mutex;
|
||||
|
||||
struct MyString<'a> {
|
||||
data: &'a str,
|
||||
}
|
||||
|
||||
fn i_want_static_closure<F>(a: F)
|
||||
where F: Fn() + 'static {}
|
||||
|
||||
fn print_string(s: Mutex<MyString<'static>>) {
|
||||
|
||||
i_want_static_closure(move || { // error: this closure has lifetime 'a
|
||||
// rather than 'static
|
||||
println!("{}", s.lock().unwrap().data);
|
||||
});
|
||||
}
|
||||
```
|
|
@ -8,3 +8,4 @@ LL | foo::<&'a i32>();
|
|||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0477`.
|
||||
|
|
|
@ -8,3 +8,4 @@ LL | let x = foo::<&'a u32>();
|
|||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0477`.
|
||||
|
|
|
@ -76,4 +76,5 @@ LL | let a: Box<dyn Gettable<Foo>> = t;
|
|||
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
Some errors have detailed explanations: E0277, E0477.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
|
|
|
@ -33,4 +33,5 @@ LL | assert_send::<Box<dyn Dummy + 'a>>();
|
|||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
Some errors have detailed explanations: E0277, E0477.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
|
|
|
@ -48,3 +48,4 @@ LL | assert_send::<*mut &'a isize>();
|
|||
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0477`.
|
||||
|
|
|
@ -8,3 +8,4 @@ LL | Foo.some_method::<&'a isize>();
|
|||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0477`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue