Dev Study
Rust コース

36. 構造体に参照を持たせる

構造体のフィールドに参照を持たせるには、struct Excerpt<'a> { part: &'a str } のように構造体自体にライフタイムパラメータを付けます。これは「Excerpt のインスタンスは、part が指す元データより長生きできない」という宣言です。

大きな文字列の一部だけを扱いたいとき、String に複製せず &str のスライスのまま保持できるため、無駄なコピーを避けられます。impl を書くときも impl<'a> Excerpt<'a> { ... } とパラメータを繰り返します。

参照を持つ構造体は便利な一方、元データより長く保持できない制約がつきまといます。設計に迷ったら、まずは String などの所有する型でフィールドを持ち、必要になってから参照に切り替えるのが安全な進め方です。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Rust
サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗