Converting a str to a &[u8]

StringRustSlice

String Problem Overview


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

String Solutions


Solution 1 - String

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)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionynimousView Question on Stackoverflow
Solution 1 - StringfjhView Answer on Stackoverflow