将str转换为& [u8]

时间:2015-07-08 10:11:46

标签: string rust slice

这似乎微不足道,但我无法找到办法。

例如,

fn f(s: &[u8]) {}

pub fn main() {
    let x = "a";
    f(x)
}

无法编译:

error: mismatched types:
 expected `&[u8]`,
    found `&str`
(expected slice,
    found str) [E0308]
然而,

documentation声明:

  

strs的实际表示与切片有直接映射:& str   与& [u8]相同。

1 个答案:

答案 0 :(得分:34)

您可以使用as_bytes方法:

fn f(s: &[u8]) {}

pub fn main() {
    let x = "a";
    f(x.as_bytes())
}

或者,在您的具体示例中,您可以使用字节文字:

let x = b"a";
f(x)