rust 如何创建一个包含不同泛型类型的相同泛型函数的向量?

oknwwptz  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(135)

如何创建一个包含不同泛型类型的相同泛型函数的向量?
我希望向量v包含函数“decode<T:IE>(ie:&dyn IE)”和MyIEa、MyIEb,两者都实现了IE特性。

pub fn test_ex7() {

    trait IE {}

    struct MyIEa {}
    impl IE for MyIEa {}

    struct MyIEb {}
    impl IE for MyIEb {}

    fn decode<T:IE>(ie: &dyn IE) -> T{

    }

    let v = vec![
        decode::<MyIEa>,
        decode::<MyIEb>,
    ];

}

类型不匹配,应为结构Box<[for<'r> fn(&'r (dyn IE + 'r)) {decode::<MyIEa>}], _>,找到结构Box<[for<'r> fn(&'r (dyn IE + 'r)); 2], std::alloc::Global>

7gyucuyw

7gyucuyw1#

添加显式类型注解:

let v: Vec<fn(&dyn IE)> = vec![
        decode::<MyIEa>,
        decode::<MyIEb>,
    ];

相关问题