このコードはコンパイルして、仕事が、私の理解によると、それはコンパイルべきではありません。このライフタイムバウンドでエラーが発生するのはなぜですか?
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);
}
変数s
の寿命はmain
であるが、機能test
はS
は'static
でなければならないという限界があります。変数s
の有効期間は'static
以上、または'static
以上である必要があります。私の推論で何が間違っていますか?