私はベクトル上のイテレータを関数に渡すパーサを記述しようとしています。コードはこれと似ています:関数に渡されるイテレータの型を書くにはどうすればよいですか?
fn foo(itr : ???) {
while let Some(c) = itr.next() {
if *c != 0 {
break;
}
println!("{}", *c);
}
}
fn main() {
let v = vec![0; 10];
let itr = v.iter();
while let Some(c) = itr.next() {
foo(itr);
}
}
どのようにベクトルにイテレータのタイプを書くか分かりません。私は間違ったタイプu32
を入れてみました。rustc
のタイプはcore::slice::Iter<'_, _>
です。私はcore::slice
rustcがUse of undeclared type or module 'core::slice'
驚くばかり! FYI再帰的降下構文解析プログラムのような相互に再帰的な関数がある場合、ジェネリックを使用するとrustはコンパイルされませんが、traitオブジェクトを使用すると動作します。 –