[英]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.