Converting a str to a &[u8]
47,232
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)
Author by
ynimous
Updated on July 09, 2020Comments
-
ynimous almost 4 years
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].
-
llogiq almost 9 yearsI'd like to add that the documentation relates to the representation, but conceptually a string slice guarantees that its content is valid UTF-8, whereas a byte slice doesn't.