実現したいこと
メソッドの戻り値をライフタイムの制約なしの状態で受け取りたい。
発生している問題・分からないこと
後述のメソッドgについてselfと同じライフタイムにしないとエラーが出てしまいます。
エラーメッセージ
error
1the associated type `<Self as X>::T` may not live long enough
該当のソースコード
Rust
1trait X { 2 type T: Y; 3 fn f(&self) -> Self::T; 4 fn g<'a>(&'a self) -> Box<dyn Y + 'a> { 5 Box::new(self.f()) as Box<dyn Y + 'a> 6 } 7} 8trait Y {} 9 10struct A; 11 12impl X for A { 13 type T = A; 14 fn f(&self) -> Self::T { 15 A 16 } 17} 18 19impl Y for A {} 20
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
動的ディスパッチやライフタイムに関する情報を検索しましたが見つかりませんでした。
補足
そもそもライフタイムの制約が必要になる理由がよくわかっていないので、その解説もお願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/08/18 03:45