gpt4 book ai didi

generics - Rust 自定义适配器和泛型

转载 作者:行者123 更新时间:2023-11-29 08:35:25 27 4
gpt4 key购买 nike

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

我不知道如何编译我的程序。我在没有使用 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>

关于generics - Rust 自定义适配器和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39454382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com