Dieser Code kompiliert und Arbeit, aber nach meinem Verständnis, sollte es nicht kompilieren:Warum verursacht diese Lebensdauergrenze keinen Fehler?
use std::fmt::Display;
pub fn test<S>(s: S)
where
S: Display + 'static,
{
println!("test: {}", s);
}
fn main() {
let s = String::from("string");
test(s);
}
Die Lebensdauer der variablen s
in main
ist, aber die Funktion test
hat ein gebundenes dass S
'static
sein muss. Ich denke, die Lebensdauer der Variablen s
muss 'static
oder größer als 'static
sein. Was ist los mit meiner Argumentation?