J'ai un code étrange :
#![allow(unused)]
fn f<'a>() {}
fn g<'a: 'a>() {}
fn main() {
// let pf = f::<'static> as fn(); // (7)
let pg = g::<'static> as fn(); // (8)
//print!("{}", pf == pg);
}
La 7ème ligne ne peut pas être compilée si elle n'est pas commentée (avec l'erreur ci-dessous), mais la 8ème ligne peut être compilée.
error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present
--> src/main.rs:7:18
|
7 | let pf = f::<'static> as fn(); // (7)
| ^^^^^^^
|
note: the late bound lifetime parameter is introduced here
--> src/main.rs:3:6
|
3 | fn f<'a>() {}
| ^^
Quelle est la signification de 'a: 'a
la ligne 4 ?