本文介绍了将 str 转换为 &[u8]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这看起来微不足道,但我找不到办法.

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

例如

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] 相同.

推荐答案

您可以使用 as_bytes 方法:

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)

这篇关于将 str 转换为 &[u8]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-26 08:54