타입 매개변수
타입 매개변수 (Type parameters)
제네릭 함수를 만들다 보면, 아이템 본문 안에서 그 타입 매개변수의 이름이 그대로 타입으로 쓰이는 걸 보게 돼요. 이 페이지에서는 그 관계를 정확히 짚어볼게요.
출처: Rust Reference
본문
타입 매개변수 선언을 가진 아이템의 본문 안에서는, 그 타입 매개변수의 이름이 곧 타입이에요. 예를 들어 볼게요.
fn to_vec<A: Clone>(xs: &[A]) -> Vec<A> {
if xs.is_empty() {
return vec![];
}
let first: A = xs[0].clone();
let mut rest: Vec<A> = to_vec(&xs[1..]);
rest.insert(0, first);
rest
}
여기서 first는 타입 A를 갖는데, 이 A는 to_vec의 타입 매개변수 A를 가리켜요. 그리고 rest는 타입 Vec<A>를 갖는데, 이는 요소 타입이 A인 벡터를 뜻하죠.