Mã này biên dịch và làm việc, nhưng theo sự hiểu biết của tôi, nó không nên biên dịch:Tại sao cuộc đời này bị ràng buộc gây ra lỗi?
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);
}
Thời gian tồn tại của biến s
là trong main
, nhưng chức năng test
có một ràng buộc mà S
phải 'static
. Tôi nghĩ rằng tuổi thọ của biến số s
phải là 'static
hoặc lớn hơn 'static
. Có gì sai với lý do của tôi?