Cómo convertir &str a &[u8] en Rust?
¡Hola a todos! Acabo de empezar a aprender Rust y me encontré con un problema que parece simple, pero no encuentro la solución correcta. Necesito pasar un string a una función que espera un slice de bytes `&[u8]`. Por ejemplo, estoy escribiendo un programa simple para trabajar con archivos: quiero escribir un string en un archivo usando `write`, pero esta función acepta `&[u8]`, mientras que yo tengo un `&str`.
Aquí está mi código:
```rust
use std::fs::File;
use std::io::Write;
fn main() {
let s = "Привет, мир!";
let mut file = File::create("test.txt").unwrap();
file.write(s).unwrap(); // Error: expected &[u8], found &str
}
```
Obtengo un error de compilación: `expected &[u8], found &str`. Entiendo que los strings en Rust son UTF-8, y los bytes son simplemente una secuencia de bytes. Pero, ¿cómo obtengo un slice de bytes a partir de un string? Intenté usar `as_bytes()`, pero no estoy seguro de que sea correcto. Además, ¿hay alguna diferencia entre `&str` y `String` en este contexto? ¿Y qué hacer si el string contiene caracteres no ASCII, como en mi ejemplo?