String a &str
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 54 z 66.
Rust ma dwa główne typy łańcuchów znaków, które służą różnym celom: String i &str. Zrozumienie różnicy między nimi jest kluczowe dla efektywnej pracy z tekstem w Rust.
String to własny, alokowany na stercie ciąg znaków, który możesz modyfikować. Gdy tworzysz String, Twój program jest właścicielem tych danych i odpowiada za zarządzanie ich pamięcią. Możesz go powiększać, zmniejszać i zmieniać jego zawartość, ponieważ jest mutowalny, gdy zadeklarujesz go z użyciem mut.
let mut my_string = String::from("Hello");
my_string.push_str(" World"); // To działa, ponieważ String ma właściciela i można go modyfikowaćNatomiast &str (wymawiane „wycinek ciągu znaków”) to pożyczony, niemodyfikowalny widok na dane tekstowe. Nie jest właścicielem wskazywanych danych — to tylko odwołanie do treści ciągu znaków, która istnieje gdzie indziej. Literały tekstowe, takie jak "Hello", mają w rzeczywistości typ &str.
let my_slice: &str = "Hello World"; // To jest wycinek łańcucha znakówWyobraź sobie, że String to książka, którą posiadasz i w której możesz pisać oraz wprowadzać zmiany, natomiast &str przypomina pożyczoną od kogoś książkę — możesz ją czytać, ale nie możesz jej zmieniać. To rozróżnienie ma fundamentalne znaczenie dla systemu własności w Rust i pomaga zapewnić bezpieczeństwo pamięci.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kod6Obsługa braku wartości za pomocą „Option”
Czym jest „Option”?Używanie „match” z „Option”is_some() i is_none()Rozpakowywanie „Option”Metoda expectPodawanie wartości domyślnej: unwrap_orPodsumowanie – znajdowanie elementu9Wycinki napisów i więcej
String a &strTworzenie wycinków napisówWycinki jako parametry funkcjiInne wycinkiPodsumowanie — znajdowanie pierwszego słowaPoćwicz samodzielnie: Kompilator Rust online