Rustのジェネリクス<T: 'static>は参照でない型なら入る
#Rust
'static &str型なら入るのは直感的にわかるが、参照でない型が入る。
つまり、以下はコンパイルが通って実行できる。
code:rs
struct MyStruct;
fn f1<T: 'static>(v: T) -> T {
v
}
fn main() {
f1(10);
f1(MyStruct);
}
これに関連するTipsとして関数や構造体のジェネリクスで所有型しか受け取らないようにするには <T: 'static> が使えます。
発見元/引用元: Rustの所有権、ライフタイム、参照、型、しがらみ | κeenのHappy Hacκing Blog
<T: 'static>をよく見かけるが'staticライフタイムなものってそんなになさそうと思っていたが、&T(参照型)でのライフタイムならそうかもしれないけど、参照でない型(下の記事で"所有型"と呼んでる)はすべて'staticになるTIPSが書いてあって'staticでも渡せるのがなるほどだった。