[Rust]泛型

泛型允许在程序中包含使用调用(实例化)时才确定的类型,这样就可以将不同类型具有相同功能的代码抽象在一个方法中。

结构体和枚举中的泛型

标准库中的泛型

enum Option {
    Some(T),
    None,
}

泛型可以有默认值,如下实例化Default时如果不指定T的类型,那它就是i32类型,否则通过::<>指定类型。

struct Default {
    value: T
}

fn main() {
    let v1 = Default { value: 0};
    let v2 = Default:: { value: false};
    println!("{} {}", v1.value, v2.value);
}

函数中的泛型

fn test (a: T) {
    println!("{}", a);
}


fn main() {
    test(1)
}

如果需要多个类型参数,则需要多个泛型。

fn test (a: T1, b: T2) {
    println!("{}", a);
    println!("{}", b);
}


fn main() {
    test(1, 2.0f32)
}

impl中的泛型

impl的时候也可以使用泛型。在implfor{}这个语法结构中,泛型类型既可以出现在位置,也可以出现在位置。

你可能感兴趣的:([Rust]泛型)