Рядки
Тепер ми можемо зрозуміти два типи рядків у Rust:
&stris a slice of UTF-8 encoded bytes, similar to&[u8].Stringis an owned buffer of UTF-8 encoded bytes, similar toVec<T>.
fn main() { let s1: &str = "Світ"; println!("s1: {s1}"); let mut s2: String = String::from("Привіт "); println!("s2: {s2}"); s2.push_str(s1); println!("s2: {s2}"); let s3: &str = &s2[s2.len() - s1.len()..]; println!("s3: {s3}"); }
- 
&strпредставляє зріз рядка, який є незмінним посиланням на дані рядка в кодуванні UTF-8, що зберігаються в блоці пам’яті. Рядкові літерали ("Hello") зберігаються у бінарному файлі програми. - 
Тип
Stringв Rust — це оболонка навколо вектора байтів. Як і у випадку зVec<T>, він знаходиться у володінні. - 
Як і у багатьох інших типів,
String::from()створює рядок із рядкового літералу;String::new()створює новий порожній рядок, до якого дані рядка можна додати за допомогою методівpush()іpush_str(). - 
Макрос
format!()є зручним способом створення рядка, яким володіють, з динамічних значень. Він приймає таку саму специфікацію формату, як іprintln!(). - 
Ви можете запозичувати зрізки
&strзStringза допомогою&і, за бажанням, вибору діапазону. Якщо ви виберете діапазон байт, який не вирівняно за межами символів, вираз запанікує. Ітераторcharsперебирає символи, і йому надається перевага перед спробами вирівняти межі символів. - 
Для програмістів на C++: думайте про
&strяк проstd::string_viewз C++, але такий, що завжди вказує на дійсний рядок у пам’яті. RustStringє приблизним еквівалентомstd::stringз C++ (головна відмінність: він може містити лише байти у кодуванні UTF-8 і ніколи не використовує оптимізацію малих рядків).. - 
Літерали байтових рядків дозволяють створювати значення
&[u8]безпосередньо:fn main() { println!("{:?}", b"abc"); println!("{:?}", &[97, 98, 99]); } - 
Необроблені рядки дозволяють створювати значення
&strз відключеним екрануванням:r"\n" == "\\n". Ви можете вставити подвійні лапки, використовуючи однакову кількість#з обох боків лапок:fn main() { println!(r#"<a href="link.html">link</a>"#); println!("<a href=\"link.html\">link</a>"); }