Tipos de &str
Existe más de un tipo de &str:
- Cadenas de caracteres literales: que se construyen cuando se escribe código como
let mi_cadena = "Soy un &str". Este tipo de&strdura toda la ejecución del programa ya que están escritas directamente en el código fuente y así se traspasa al código binario. El tipo real que tienen estas variables es&'static str. El apostrofo'indica el tiempo o ciclo de vida (lifetime) de este valor. Las cadenas de caracteres literales tienen un tiempo de vida llamado'static, que sirve para expresar que la cadena existe durante toda la ejecución del programa. &str prestados: Es la forma habitual del tipo&str. No tiene un tiempo de vida'static, su tiempo de vida es menor a la duración de todo el programa. Por ejemplo, si se crea unStringy se obtiene una referencia a ella, Rust la convertirá a&strsi se necesita. Por ejemplo:
fn prints_str(my_str: &str) { // Esta función puede recibir &String y &str println!("{}", my_str); } fn main() { let my_string = String::from("I am a string"); prints_str(&my_string); // Se pasa a prints_str u &String }
En Rust, todas las referencias tienen un tiempo de vida asociado. ¿Y qué es el tiempo de vida? Se verá a continuación.