类型参数

在具有类型参数声明的条目的主体内部,其类型参数名称表示的类型:

#![allow(unused)]
fn main() {
// 定义了一个泛型函数 to_vec,其类型参数为 A,它要求 A 类型实现了 Clone trait
fn to_vec<A: Clone>(xs: &[A]) -> Vec<A> {
    // 如果 xs 数组为空,则直接返回空的 Vec
    if xs.is_empty() {
        return vec![];
    }
    // 定义变量 first,类型是 A,值是 xs 数组的第一个元素的克隆
    let first: A = xs[0].clone();
    // 定义变量 rest,它的类型是 Vec<A>,它的值是调用 to_vec 函数得到的结果,
    // 参数是 xs 数组的第 2 个元素到最后一个元素组成的切片。
    let mut rest: Vec<A> = to_vec(&xs[1..]);
    // 在 rest 的开头插入 first 元素
    rest.insert(0, first);
    // 返回更新后的 rest
    rest
}
}

这里, first 的类型为 A ,引用了 to_vec 的类型参数 A ; rest 的类型为 Vec<A> ,即元素类型为 A 的 vector 。