2014-09-02 45 views
1

我剛開始學習鏽,我偶然發現了這個愚蠢的問題:期望矢量卻發現結構集合:: 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()方法從Vec<u8>獲得&[u8]

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

爲什麼錯誤信息說'期望矢量卻發現X'? – 2014-09-02 17:04:16

+0

@KaiSellgren,很抱歉,但我看不出錯誤消息是怎麼說的。它說''預計'&[u8]'但是...'',但'&[T]'是一個切片,而不是一個矢量。 – 2014-09-02 18:38:50

+1

@VladimirMatveev在錯誤消息的最後,它確實說'(期望的矢量,但是找到struct collections :: vec :: Vec)'。 – 2014-09-02 19:30:58