← Rust コース
36. 構造体に参照を持たせる
構造体のフィールドに参照を持たせるには、struct Excerpt<'a> { part: &'a str } のように構造体自体にライフタイムパラメータを付けます。これは「Excerpt のインスタンスは、part が指す元データより長生きできない」という宣言です。
大きな文字列の一部だけを扱いたいとき、String に複製せず &str のスライスのまま保持できるため、無駄なコピーを避けられます。impl を書くときも impl<'a> Excerpt<'a> { ... } とパラメータを繰り返します。
参照を持つ構造体は便利な一方、元データより長く保持できない制約がつきまといます。設計に迷ったら、まずは String などの所有する型でフィールドを持ち、必要になってから参照に切り替えるのが安全な進め方です。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Rust
サンプルコードで身につける(5本) →
学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。
公式ドキュメントで詳しく ↗