Strings
Rust has two types to represent strings, both of which will be covered in more depth later. Both always store UTF-8 encoded strings.
String- a modifiable, owned string.&str- a read-only string. String literals have this type.
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!("final sentence: {}", sentence); println!("{:?}", &sentence[0..5]); //println!("{:?}", &sentence[12..13]); }
This slide introduces strings. Everything here will be covered in more depth later, but this is enough for subsequent slides and exercises to use strings.
-
Invalid UTF-8 in a string is UB, and this not allowed in safe Rust.
-
Stringis a user-defined type with a constructor (::new()) and methods likes.push_str(..). -
The
&in&strindicates that this is a reference. We will cover references later, so for now just think of&stras a unit meaning “a read-only string”. -
The commented-out line is indexing into the string by byte position.
12..13does not end on a character boundary, so the program panics. Adjust it to a range that does, based on the error message. -
Raw strings allow you to create a
&strvalue with escapes disabled:r"\n" == "\\n". You can embed double-quotes by using an equal amount of#on either side of the quotes:fn main() { println!(r#"<a href="link.html">link</a>"#); println!("<a href=\"link.html\">link</a>"); }