web-dev-qa-db-ja.com

strを&[u8]に変換する

これは些細なことのように思えますが、私はそれを行う方法を見つけることができません。

例えば、

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

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

次を使用してコンパイルできません。

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

ドキュメント ただし、次のように述べています:

Strの実際の表現には、スライスへの直接マッピングがあります。&strは&[u8]と同じです。

31
ynimous

as_bytes メソッドを使用できます。

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

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

または、特定の例では、バイトリテラルを使用できます。

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