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&str
dura 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 unString
y se obtiene una referencia a ella, Rust la convertirá a&str
si 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.