Rust 빌린 값을 struct에 가지고 있기
2018년 11월 24일에 씀
Rust에선 빌린 값들만 들고 있는 struct를 만드는 것도 가능하다.
아래 코드의 Foo의 lifetime은 a와 b의 lifetime과 같다
struct Foo<'a> {
a: &'a str,
b: &'b str,
}레퍼런스는 값을 빌리는 방법이다. 빌린 값을 가지고 있는 struct는 빌린 값보다 오래 살 수 없다. 처음 코드를 짠다면 struct는 자신의 field를 항상 소유하고 있다고 가정하기 쉽다. 하지만 값을 소유하지 않고 빌려서 잠시 들고있는 struct들도 존재하고 이들도 꽤 쓸모가 있다.
값을 소유하는 예시
struct가 값을 소유하는 상황은 매우 익숙하다.
아래의 Person 구조체는 이름과 주소를 소유하고 있다. name필드와 address필드는 Person 구조체가 파괴될 때 같이 파괴된다.
struct Person {
name: String,
address: String,
}값을 빌려쓰는 예시
계산기처럼 값을 빌려와서 다른 값을 생성하고 사라지는 구조체는 레퍼런스를 값으로 들고있는 게 자연스럽다.
struct StatisticCalculator<'a> {
data: &'a [i32]
}
impl<'a> StatisticCalculator {
fn get_max(&self) -> i32 { ... }
fn get_min(&self) -> i32 { ... }
fn get_average(&self) -> i32 { ... }
}