Strings

Rust tem dois tipos para representar strings, ambos serĂŁo abordados com mais detalhes posteriormente. Ambos armazenam sempre strings codificadas em UTF-8.

  • String - uma string modificĂĄvel e owned (de propriedade).
  • &str - uma string somente leitura. Literais de string tĂȘm este tipo.
fn main() {
    let greeting: &str = "Greetings";
    let planet: &str = "đŸȘ";
    let mut sentence = String::new();
    sentence.push_str(greeting);
    sentence.push_str(", ");
    sentence.push_str(planet);
    println!("sentença final: {}", sentence);
    println!("{:?}", &sentence[0..5]);
    //println!("{:?}", &sentence[12..13]);
}
This slide should take about 5 minutes.

Este slide introduz strings. Tudo aqui serĂĄ abordado com mais profundidade mais tarde, mas isso Ă© o suficiente para que slides e exercĂ­cios subsequentes usem strings.

  • UTF-8 invĂĄlido em uma string Ă© UB, e isso nĂŁo Ă© permitido em Rust seguro.

  • String Ă© um tipo definido pelo usuĂĄrio com um construtor (::new()) e mĂ©todos como s.push_str(..).

  • O & em &str indica que esta Ă© uma referĂȘncia. Abordaremos referĂȘncias mais tarde, entĂŁo, por enquanto, pense em &str como uma unidade que significa “uma string somente leitura”.

  • A linha comentada estĂĄ indexando a string pela posição do byte. 12..13 nĂŁo termina em um limite de caractere, entĂŁo o programa entra em pĂąnico. Ajuste para um intervalo que o faça, com base na mensagem de erro.

  • Strings brutas permitem que vocĂȘ crie um valor &str com caracteres de escape desabilitados: r"\n" == "\\n". VocĂȘ pode embutir aspas duplas utilizando uma quantidade igual de # em ambos os lados das aspas:

    fn main() {
        println!(r#"<a href="link.html">link</a>"#);
        println!("<a href=\"link.html\">link</a>");
    }
  • Using {:?} is a convenient way to print array/vector/struct of values for debugging purposes, and it’s commonly used in code.