12 Generics
제네릭은 타입과 기능을 더 광범위한 범위로 일반화 하는 주제다. 이는 많은 경우에 코드 중복을 줄이는데 매우 효과적이지만 꽤 복잡한 문법을 수반한다. 즉, 제네릭을 사용하려면 제네릭 타입들이 실제로 유효한지에 대한 깊은 고려가 요구된다. 간단하고 가장 범용적으로 제네릭이 사용되는 곳은 매개변수의 타입이다.
타입 매개변수로 명시하고자 하는 제네릭은 꺾쇠 괄호를 사용하고 대문자camel case: <Aaa, Bbb, ...>
를 사용한다 <Aaa, Bbb, ...>
. "제네릭 타입 매개변수"들은 일반적으로 <T>
로 표현된다. Rust에서, "제네릭"은 모든 것 심지어 하나 혹은 그 이상의 <T>
타입 매개변수들도 표현 할 수 있다. 제네릭 타입 매개변수로 기재된 모든 타입은 일반화이고 다른 것들은 구체화이다.(비-제네릭).
예제로 제네릭 함수 food
를 정의해서 인자로 어떤 타입 T
를 취해보자.
fn foo<T>(T) { ... }
T
가 제네릭 타입 매개변수로 <T>
를 사용하여 명시되어, 여기서 (T)
는 제네릭으로 취급된다. 이는 그 전에 struct
로 T
가 정의되었어도 적용된다.
이 예제는 몇 구문의 실행을 보여준다: