2014-09-02 1 views
1

Я только начал изучать Ржавчина и я наткнулся на эту глупую проблему:Ожидаемый вектор, но нашел коллекции STRUCT :: Vec :: Vec

error: mismatched types: expected `&[u8]` but found `&collections::vec::Vec<u8>` (expected vector but found struct collections::vec::Vec) 

Мой код выглядит следующим образом:

let compressed_contents = match File::open(&Path::new(path)).read_to_end() { 
    Ok(f) => f, 
    Err(e) => fail!("File error: {}", e), 
}; 
let contents = inflate_bytes(&compressed_contents); 

Он ожидает вектор, и я даю ему вектор. Очевидно, должен быть какой-то другой вектор, который он хочет?

ответ

1

Ожидается вектор, и я даю ему вектор.

Нет, ты неправильно :) Это ожидает кусочек и вы даете ему вектор. Используйте as_slice() метод получения &[u8] из Vec<u8>:

let contents = inflate_bytes(compressed_contents.as_slice()); 
+0

Почему сообщение об ошибке сказать 'ожидается вектор, но нашел x'? –

+0

@KaiSellgren, извините, но я не понимаю, как это говорит об ошибке. Он говорит '' ожидаемый' & [u8] 'но ...' ', но' & [T] '- это срез, а не вектор. –

+1

@VladimirMatveev В самом конце сообщения об ошибке он действительно говорит '(ожидаемый вектор, но найденный struct collections :: vec :: Vec)'. –

 Смежные вопросы

  • Нет связанных вопросов^_^