[Rust]泛型

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

结构体和枚举中的泛型

标准库中的泛型

enum Option<T> {
    Some(T),
    None,
}

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

struct Default<T=i32> {
    value: T
}

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

函数中的泛型

fn test<T: std::fmt::Display> (a: T) {
    println!("{}", a);
}


fn main() {
    test(1)
}

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

fn test<T1: std::fmt::Display, T2: std::fmt::Display> (a: T1, b: T2) {
    println!("{}", a);
    println!("{}", b);
}


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

impl中的泛型

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容