1. ホーム
  2. string

[解決済み] strを&[u8]に変換する。

2023-03-02 09:12:26

質問

些細なことのようですが、やり方がわかりません。

例えば

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]と同じです。

どのように解決するのですか?

あなたは as_bytes メソッドを使用します。

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

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

または、あなたの特定の例では、バイトリテラルを使用することができます。

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