我想执行一项非常简单的任务,但我无法阻止编译器抱怨。
fn transform(s: String) -> String {
let bytes = s.as_bytes();
format!("{}/{}", bytes[0..2], bytes[2..4])
}
[u8]
在编译时没有已知的常量。
使这项操作按预期工作的一些技巧?
答案 0 :(得分:5)
实际上,[u8]
的大小在编译时是不可知的。然而,&[u8]
的大小在编译时是已知的,因为它只是一个指针加上表示序列长度的usize
。
format!("{:?}/{:?}", &bytes[0..2], &bytes[2..4])
Rust字符串以utf-8编码,因此以这种方式处理字符串通常是个坏主意,因为单个unicode字符可能包含多个字节。