2017-10-30 10 views
0

がここに最小限のREPROだ「トレイトは `のstd :: :: AsRef <[u8]>を変換` `u8`のために実装されていません」 :にエラーがある

error[E0277]: the trait bound `u8: std::convert::AsRef<[u8]>` is not satisfied 
--> src/main.rs:7:16 
    | 
7 |   writer.write_record(buf); 
    |    ^^^^^^^^^^^^ the trait `std::convert::AsRef<[u8]>` is not implemented for `u8` 
    | 
    = note: required because of the requirements on the impl of `std::convert::AsRef<[u8]>` for `&u8` 

このエラーは何を意味しますか?すでにu8スライスを渡しているようですか?

答えて

1

レビューwrite_recordのための署名は:

fn write_record<I, T>(&mut self, record: I) -> Result<()> 
where 
    I: IntoIterator<Item = T>, 
    T: AsRef<[u8]>, 

これは、値のイテレータになることができる何かを期待しています。 &[u8]を提供しています。ですが、イテレータは&u8です。エラーは、&u8AsRef<[u8]>を実装していないことです。

あなたはイテレータとして動作することができる何かを作成するために、別の配列内の単一の渡された文字列をラップすることができます

writer.write_record(&[buf]); 
関連する問題