索引字符串

时间:2015-06-23 07:23:14

标签: rust

我想执行一项非常简单的任务,但我无法阻止编译器抱怨。

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

[u8]在编译时没有已知的常量。

使这项操作按预期工作的一些技巧?

1 个答案:

答案 0 :(得分:5)

实际上,[u8]的大小在编译时是不可知的。然而,&[u8]的大小在编译时是已知的,因为它只是一个指针加上表示序列长度的usize

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

Rust字符串以utf-8编码,因此以这种方式处理字符串通常是个坏主意,因为单个unicode字符可能包含多个字节。