为什么要编译这个铁 rust 代码?
use std::fmt::Display;
fn g<T: 'static + Display>(t: T) {
println!("{}", t);
}
fn t() {
let x: i32 = 12;
g(x);
}
fn main() {
t();
}
当然,在函数t()
中,局部变量x
不是静态的,然而g
的模板规范似乎满足了它必须是静态的要求.我误解了什么?
背景:上面的例子显然是人为设计的.在我正在处理的一个更复杂的设置中,编译器强迫我使用T: 'static
而不是只使用T
,但我不想只将它用于静态类型.然而,令我惊讶的是,它也适用于非静态变量,我感到困惑……