Cadenas de texto (Strings)

En Rust hay dos tipos para representar cadenas, de los que hablaremos con detenimiento más adelante. Ambos tipos siempre almacenan cadenas codificadas en UTF-8.

  • String - a modifiable, owned string.
  • &str: es una cadena de solo lectura. Los literales de cadena son de este tipo.
fn main() {
    let greeting: &str = "Saludos";
    let planet: &str = "🪐";
    let mut sentence = String::new();
    sentence.push_str(greeting);
    sentence.push_str(", ");
    sentence.push_str(planet);
    println!("frase final: {}", sentence);
    println!("{:?}", &sentence[0..5]);
    //println!("{:?}", &sentence[12..13]);
}
This slide should take about 10 minutes.

En esta diapositiva se presentan las cadenas. Más adelante hablaremos de todo lo relacionado con este tema, pero esta información es suficiente para que se puedan usar cadenas en las diapositivas y ejercicios que vienen a continuación.

  • La codificación UTF-8 no válida en una cadena tiene comportamiento indefinido y no es compatible con Rust seguro.

  • String es un tipo definido por el usuario con un constructor (::new()) y métodos como s.push_str(..).

  • La & en &str indica que se trata de una referencia. Más adelante hablaremos de las referencias, por el momento solo es necesario saber que &str es una unidad que significa "cadena de solo lectura".

  • La línea marcada como comentario se indexa en la cadena por posición de byte. 12..13 no termina en el límite de un carácter, por lo que el programa da error. Ajusta el intervalo en función del mensaje de error.

  • Las cadenas sin formato te permiten crear un valor &str con los escapes inhabilitados: r"\n" == "\\n". Puedes insertar comillas dobles con la misma cantidad de # a cada lado de ellas:

    fn main() {
        println!(r#"<a href="link.html">link</a>"#);
        println!("<a href=\"link.html\">link</a>");
    }