largest_i32(&[i32])largest_char(&[char])제네릭은 여러 타입에서 같은 구조나 알고리즘을 공유하되, 구체 타입의 안전성은 컴파일러가 유지하게 합니다.
Rust는 단형성화를 통해 제네릭 코드를 구체 타입별 코드로 바꾸므로 일반적으로 런타임 비용이 추가되지 않습니다.
largest_i32(&[i32])largest_char(&[char])largest<T: PartialOrd>(&[T])타입 관계와 필요한 동작만 남김largest::<i32>largest::<char>fn largest<T>처럼 매개변수 타입을 나중에 정하게 합니다.
Point<T>처럼 필드 타입을 재사용 가능한 형태로 둡니다.
Option<T>, Result<T, E>처럼 값의 모양과 실패 타입을 분리합니다.
impl<T> 블록으로 제네릭 타입에 동작을 붙입니다.
중복 함수나 타입에서 달라지는 부분을 표시합니다.
달라지는 타입을 T, E 같은 매개변수로 올립니다.
필요한 연산이 있으면 다음 절의 트레이트 바운드로 제한합니다.
제네릭은 아무 타입이나 받는다는 뜻이 아니라, 같은 패턴을 타입 안정성을 잃지 않고 재사용한다는 뜻입니다.