Vec<T>のイテレータを消費するには
次のように,Vec<T>::iter()
をイテレータを消費する関数consume()
に対して渡したいのですが,
fn consume<T: Iterator<Item=char>>(input: &mut T){
unimplemented!()
}
fn main(){
let mut buffer = vec!['a','b','c'];
consume(&mut buffer.iter()); //type mismatch
}
次のようなコンパイルエラーが生じます.
prog.rs:7:5: 7:12 error: type mismatch resolving `<core::slice::Iter<'_, char> as core::iter::Iterator>::Item == char`:
expected &-ptr,
found char [E0271]
buffer
はconsume()
の呼出し後は破壊されても構いません.どのように書くのが良いでしょうか.