索引字符串

ant*_*ter 3 rust

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

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

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

一些提示使此操作按预期工作?

A.B*_*.B. 5

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

format!("{:?}/{:?}", &bytes[0..2], &bytes[2..4])
Run Code Online (Sandbox Code Playgroud)

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