次のように,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]

bufferconsume()の呼出し後は破壊されても構いません.どのように書くのが良いでしょうか.