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]); }
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 comos.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.