問題一覧に戻る
中級ライフタイム
問題70: 構造体のライフタイム
参照を含む構造体はライフタイムパラメータが必要で、参照が有効であることを保証します。ライフタイムパラメータ'aは構造体が参照されたデータより長生きしないことを示します。構造体フィールドのダングリング参照を防ぎます。implブロックでも一貫性を保つためライフタイムパラメータが必要です。
// 参照を含む構造体
struct Book<> {
title: & str,
author: & str,
}
// ライフタイムパラメータを持つimpl
impl<> Book<> {
fn new(title: & str, author: & str) -> Self {
Book { title, author }
}
fn info(&self) -> String {
format!("{} by {}", self.title, self.author)
}
}
fn main() {
let title = "The Rust Programming Language";
let author = "Steve Klabnik";
// 構造体のインスタンスを作成
let book = Book::new(title, author);
println!("{}", book.info());
}