[rust] 제네릭 사용 사례
제네릭은 Rust에서 코드를 추상화하고 유연하게 만드는 강력한 도구입니다. 여러 데이터 유형 및 함수에 대해 범용적으로 작업할 수 있습니다. 여기에는 제네릭을 사용하여 일반적으로 해당되는 몇 가지 사례가 있습니다.
1. 벡터와 제네릭
fn get_first<T>(list: &Vec<T>) -> Option<&T> {
list.first()
}
fn main() {
let numbers = vec![1, 2, 3, 4, 5];
let first_number = get_first(&numbers);
println!("The first number is {:?}", first_number);
}
위의 예제에서 get_first
함수는 벡터의 첫 번째 항목을 반환하는데, 이때 제네릭을 사용하여 모든 데이터 유형에 대해 작동할 수 있도록 합니다.
2. 함수와 제네릭
fn swap<T>(a: &mut T, b: &mut T) {
std::mem::swap(a, b);
}
fn main() {
let mut x = 5;
let mut y = 10;
swap(&mut x, &mut y);
println!("x: {}, y: {}", x, y);
}
위의 예제에서 swap
함수는 주어진 두 값을 교환하는 함수로, 제네릭을 사용하여 모든 데이터 유형에 대해 작동할 수 있도록 합니다.
3. 구조체와 제네릭
struct Point<T> {
x: T,
y: T,
}
fn main() {
let point1 = Point { x: 5, y: 10 }; // 정수
let point2 = Point { x: 1.0, y: 4.0 }; // 부동 소수점
}
위의 예제에서 Point
구조체는 제네릭을 사용하여 x
와 y
필드가 동일한 데이터 유형일 필요가 없도록 합니다.
제네릭을 사용하여 코드를 보다 유연하고 재사용 가능하게 만들 수 있습니다. Rust에서는 제네릭을 통해 벡터, 함수, 구조체뿐만 아니라 여러 다른 방면에서 코드를 추상화하고 일반화하는 데 활용할 수 있습니다.
더 알아보고 싶다면 Rust 공식 문서를 참고해 주세요.