rust와 lifetime
- rust는 함수의 파라미터, 구조체의 필드에 lifetime을 명시 해 줘야 한다
- 이는 함수의 소유권이 유효한 시간을 의미함
- 동일한 lifetime동안 모든 파라미터를 사용할 수 있도록 보장함
- 다만 가장 짧은 lifetime에 맞춰짐
fn longest<'a> (x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
fn main() {
let result;
let x = "123";
{
let y = "1";
result = longest(x, y);
println!("result = {}", result);
}
println!("result = {}", result); // <<<< compile error.
// 'a를 가진 result는 y와 동일한 lifetime을 가짐.
// 따라서 y의 소유권이 끝났기 때문에, result도 여기서 사용이 불가능함
}