2015-06-23 160 views
2

我想執行一項非常簡單的任務,但我無法設法停止編譯器的抱怨。索引字符串

fn transform(s: String) -> String { 
    let bytes = s.as_bytes(); 
    format!("{}/{}", bytes[0..2], bytes[2..4]) 
} 

[u8]在編譯時沒有恆定的大小。

使這項操作按預期工作的一些提示?

回答

5

確實,編譯時不知道[u8]的大小。然而,&[u8]的大小在編譯時是已知的,因爲它只是一個指針加上表示序列長度的usize

format!("{:?}/{:?}", &bytes[0..2], &bytes[2..4]) 

鏽字符串爲UTF-8,所以以這種方式字符串處理通常是一個壞主意,因爲一個單一的Unicode字符可以由多個字節組成。

+0

該死的thx。從高級語言中發佈會讓我覺得很聰明。 –

+0

隨時提及任何你想澄清的東西:) – aochagavia