타입 매개변수

타입 매개변수 (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를 갖는데, 이 Ato_vec의 타입 매개변수 A를 가리켜요. 그리고 rest는 타입 Vec<A>를 갖는데, 이는 요소 타입이 A인 벡터를 뜻하죠.

더 알아보기 (Learn more)

  • Rust Reference의 그래픽 매개변수 문서에서 타입 매개변수의 성질과 경계(Bound) 문법을 더 다룬답니다.
  • Rust Reference의 타입 문서에서 타입 전체에 대한 개요를 볼 수 있어요.