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