Struct with a generic trait which is also a generic trait

前端 未结 2 761
伪装坚强ぢ
伪装坚强ぢ 2021-01-20 20:57

In Rust 1.15, I have created a trait to abstract over reading & parsing file format(s). I\'m trying to create a struct which has this generic trait inside.

I hav

2条回答
  •  时光取名叫无心
    2021-01-20 21:32

    You probably don't want a type parameter, you want an associated type:

    use std::io::Read;
    
    trait MyReader {
        type R: Read;
    
        fn new(Self::R) -> Self;
        fn into_inner(self) -> Self::R;
    
        fn get_next(&mut self) -> Option;
        fn do_thingie(&mut self);
    }
    
    struct MyIterThing<'a, T>
        where T: MyReader + 'a
    {
        inner: &'a mut T,
    }
    
    fn main() {}
    

    See also:

    • When is it appropriate to use an associated type versus a generic type?
    • Why am I getting "parameter is never used [E0392]"?
    • How can I have an unused type parameter in a struct?

提交回复
热议问题