-1
저는 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);
}
}
다음에 당신이 한 문제 : 1) 감소 동일한 오류를 나타내는 가장 작은 예제 코드, 2) * 오류를 제공하십시오. – mcarton
이것은 이미 프로그램의 작은 버전입니다. 내 문제는 올바른 구문을 사용하여 "무언가를하는 방법"과 더 비슷했습니다. 여기에 실제로 이해가되지 않았기 때문에 오류 메시지가 표시되지 않았습니다. – Vincent