構造体
構造体におけるライフタイムの注釈も、関数の場合と同様です:
// `i32` への参照を保持する型 `Borrowed`。 // `i32` への参照は `Borrowed` よりも長く存続しなければなりません。 #[derive(Debug)] struct Borrowed<'a>(&'a i32); // 同様に、ここでは両方の参照がこの構造体よりも長く存続しなければなりません。 #[derive(Debug)] struct NamedBorrowed<'a> { x: &'a i32, y: &'a i32, } // `i32` またはそれへの参照のいずれかである列挙型。 #[derive(Debug)] enum Either<'a> { Num(i32), Ref(&'a i32), } fn main() { let x = 18; let y = 15; let single = Borrowed(&x); let double = NamedBorrowed { x: &x, y: &y }; let reference = Either::Ref(&x); let number = Either::Num(y); println!("x は {:?} 内で借用されています", single); println!("x と y は {:?} 内で借用されています", double); println!("x は {:?} 内で借用されています", reference); println!("y は {:?} 内では借用されて*いません*", number); }