繁体   English   中英

Rust 自定义适配器和泛型

[英]Rust custom adapter and generics

我是 Rust 的初学者,我想实现一个适配器,它以u8&u8的迭代器作为输入并输出一些块。

我不知道如何让我的程序编译。 我使适配器工作而不使用ends_with_separator() ,其中对迭代器的类型没有限制,但现在我需要定义我的适配器,以便它只接受u8&u8迭代器,我不知道如何做到这一点。

pub struct Chunk<T> {
    pub data: Vec<T>,
}

pub struct Chunker<I> {
    pub iter: I,
}

impl<I> Chunker<I> {
    fn ends_with_separator(buf: &Vec<u8>) -> bool {
        match buf.last() {
            Some(v) => v % 7 == 0,
            None => true,
        }
    }
}

impl<I: Iterator> Iterator for Chunker<I> {
    type Item = Chunk<I::Item>;

    #[inline]
    fn next(&mut self) -> Option<Self::Item> {
        let mut buf = Vec::new();
        while let Some(v) = self.iter.next() {
            buf.push(v);
            if Self::ends_with_separator(&buf) {
                return Some(Chunk { data: buf });
            }
        }
        None
    }
}

fn main() {
    let chunker = Chunker { iter: (0u8..10) };
    for chunk in chunker {
        println!("{:?}", chunk.data);
    }
}

我找到了答案,我的问题纯粹是语法问题:

impl<I: Iterator<Item=u8>> Iterator for Chunker<I>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM