类型参数

parameters.md
commit: eb02dd5194a747277bfa46b0185d1f5c248f177b
本章译文最后维护日期:2020-11-14

在带有类型参数声明的程序项的代码体内,这些类型参数的名称可以直接当做类型使用:

#![allow(unused)]
fn main() {
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,援引的是 to_vec 的类型参数 Arest 的类型为 Vec<A>,它是一个元素类型为 A 向量(vector)。