[rust] 제네릭 코딩 규약
Rust 언어는 제네릭을 지원하여 데이터 타입에 의존하지 않는 함수나 구조체를 정의할 수 있게 해줍니다. 제네릭 코드를 작성할 때는 몇 가지 규약을 따르는 것이 좋습니다.
제네릭 함수와 구조체
제네릭 함수나 구조체를 작성할 때는 타입 파라미터를 사용하여 일반화된 코드를 작성합니다.
예를 들어, 다음은 Option
제네릭 열거형에 대한 간단한 예시입니다.
enum Option<T> {
Some(T),
None,
}
fn main() {
let number: Option<i32> = Option::Some(5);
let absent_number: Option<i32> = Option::None;
}
제네릭 함수 규약
제네릭 함수를 작성할 때는 함수 본문에서 지정된 타입 파라미터를 정확하게 사용해야 합니다. 또한, 타입 파라미터 이름은 일반적으로 T
, U
, V
와 같이 알파벳 글자로 지정합니다.
fn get_first<T>(list: &Vec<T>) -> Option<&T> {
list.first()
}
제네릭 제약
제네릭 함수에 대한 제약을 명시할 수 있습니다. 예를 들어, 특정 trait를 구현한 타입에 대해서만 동작하도록 제약을 설정할 수 있습니다.
fn process<T: Display>(item: T) {
// T는 Display trait을 구현한 타입이어야 한다.
println!("{}", item);
}
마무리
Rust에서 제네릭을 사용할 때는 타입 안정성을 유지하고 코드를 보다 일반화된 형태로 작성할 수 있는 장점을 살려 제네릭 규약을 지키면서 코드를 작성하는 것이 중요합니다.
참고 자료: The Rust Programming Language - Generics