Ich spiele herum mit der lifetime
Komplexität in Rost und ich landete den folgenden Code schreiben:Legendes Refs in Rost, wenn struct und es ist Mitglied hat unterschiedliche Lebensdauer
trait Boss<'a, 'c> {
fn work(&self, &'a i32) -> &'c i32;
}
struct Human<'c> {
i:&'c i32
}
impl<'a, 'b, 'c> Boss<'a, 'c> for &'b Human <'c> {
fn work(&self, v:&'a i32) -> &'c i32 {
&self.i
}
}
fn main() {
let h = Human {i:&1};
}
Dieser Code kompiliert, aber ich bin nicht sicher, Warum. Wie ich es verstehe, hat die &Human
Lebensdauer von 'b
, während das Referenzelement i
von struct Human
'c
hat. Warum beschwert sich der Compiler nicht darüber, dass 'b
'c
überleben kann?