HiveBrain v1.2.0
Get Started
← Back to all entries
snippetrustCritical

How to convert a &str to a &[u8]

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
converthowstr

Problem

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

Solution

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)

Code Snippets

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

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

Context

Stack Overflow Q#31289588, score: 144

Revisions (0)

No revisions yet.