美文网首页
[Rust]泛型

[Rust]泛型

作者: Tsun424 | 来源:发表于2020-01-16 18:55 被阅读0次

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

    结构体和枚举中的泛型

    标准库中的泛型

    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>位置。

    相关文章

      网友评论

          本文标题:[Rust]泛型

          本文链接:https://www.haomeiwen.com/subject/suquactx.html