Rust Generics, Lifetimes
Rust에서 제너릭 데이터 타입 사용법을 간단하게 살펴보고 또한 Rust에서 모든 참조는 Lifetime을 갖는 데 이 부분에 있어 다른 개발 언어와 약간 독특한 문법을 가지고 있어서 간단한 예제로 정리하였다.
어떠한 객체가 있고 이를 가리키는 참조가 있다면 객체가 삭제되었는데 참조가 여전히 존재하는 경우를 해결하는 방법이라고 생각하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 기본 참조 예제
fn main() {
let mut var1 = 10;
let mut var2 = 20;
let mut var3 = 0;
get_int_ref(&mut var1, &mut var2, &mut var3);
println!("{} + {} = {}", var1, var2, var3);
}
fn get_int_ref(p1: &mut i32, p2: &mut i32, p3: &mut i32) {
*p1 = *p1 + 1;
*p2 = *p2 - 1;
*p3 = *p1 + *p2;
}
Lifetime 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fn main() {
let mut var1 = 10;
let mut var2 = 20;
let result = get_int_ref(&mut var1, &mut var2);
println!("{}", result);
}
fn get_int_ref<'a>(p1: &'a i32, p2: &'a i32) -> &'a i32 {
if p1 > p2 {
return p1;
} else {
return p2;
}
}