Converting a str to a &[u8]

僤鯓⒐⒋嵵緔 提交于 2019-12-04 14:59:58

问题


This seems trivial, but I cannot find a way to do it.

For example,

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

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

Fails to compile with:

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

documentation, however, states that:

The actual representation of strs have direct mappings to slices: &str is the same as &[u8].


回答1:


You can use the as_bytes method:

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

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

or, in your specific example, you could use a byte literal:

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


来源:https://stackoverflow.com/questions/31289588/converting-a-str-to-a-u8

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!