这似乎微不足道,但我无法找到办法。
例如,
fn f(s: &[u8]) {}
pub fn main() {
let x = "a";
f(x)
}
无法编译:
error: mismatched types:
expected `&[u8]`,
found `&str`
(expected slice,
found str) [E0308]
然而,
strs的实际表示与切片有直接映射:& str 与& [u8]相同。
答案 0 :(得分:34)
您可以使用as_bytes方法:
fn f(s: &[u8]) {}
pub fn main() {
let x = "a";
f(x.as_bytes())
}
或者,在您的具体示例中,您可以使用字节文字:
let x = b"a";
f(x)