Dodatek A: Słowa kluczowe
Poniższe listy zawierają słowa kluczowe, które są zarezerwowane do obecnego lub przyszłego użytku przez język Rust. W związku z tym nie mogą być używane jako identyfikatory (z wyjątkiem surowych identyfikatorów, jak omawiamy w sekcji „Surowe identyfikatory”). Identyfikatory to nazwy funkcji, zmiennych, parametrów, pól struktur, modułów, skrzynek, stałych, makr, wartości statycznych, atrybutów, typów, cech lub czasów życia.
Słowa kluczowe obecnie w użyciu
Poniżej znajduje się lista słów kluczowych obecnie używanych, z opisem ich funkcjonalności.
as: Wykonuje prymitywną konwersję typów, rozróżnia konkretną cechę zawierającą element lub zmienia nazwy elementów w instrukcjachuse.async: ZwracaFuturezamiast blokowania bieżącego wątku.await: Zawiesza wykonywanie, dopóki wynikFuturenie będzie gotowy.break: Natychmiast wychodzi z pętli.const: Definiuje stałe elementy lub stałe surowe wskaźniki.continue: Przechodzi do następnej iteracji pętli.crate: W ścieżce modułu odnosi się do katalogu głównego skrzynki (crate).dyn: Dynamiczne wysyłanie do obiektu cechy.else: Alternatywa dla konstrukcji sterującychifiif let.enum: Definiuje wyliczenie.extern: Łączy funkcję lub zmienną zewnętrzną.false: Literał boolowski fałsz.fn: Definiuje funkcję lub typ wskaźnika na funkcję.for: Iteruje po elementach z iteratora, implementuje cechę lub określa czas życia wyższego rzędu.if: Rozgałęzia kod na podstawie wyniku wyrażenia warunkowego.impl: Implementuje wbudowaną lub cechową funkcjonalność.in: Część składni pętlifor.let: Wiąże zmienną.loop: Pętla bezwarunkowa.match: Dopasowuje wartość do wzorców.mod: Definiuje moduł.move: Sprawia, że zamknięcie przejmuje własność wszystkich swoich przechwyconych wartości.mut: Oznacza zmienność w referencjach, surowych wskaźnikach lub wiązaniach wzorcowych.pub: Oznacza publiczną widoczność w polach struktur, blokachimpllub modułach.ref: Wiąże przez referencję.return: Zwraca z funkcji.Self: Alias typu dla definiowanego lub implementowanego typu.self: Podmiot metody lub bieżący moduł.static: Zmienna globalna lub czas życia trwający przez całe wykonanie programu.struct: Definiuje strukturę.super: Moduł nadrzędny bieżącego modułu.trait: Definiuje cechę.true: Literał boolowski prawda.type: Definiuje alias typu lub stowarzyszony typ.union: Definiuje unię; jest słowem kluczowym tylko wtedy, gdy używane w deklaracji unii.unsafe: Oznacza niebezpieczny kod, funkcje, cechy lub implementacje.use: Wprowadza symbole do zakresu.where: Oznacza klauzule, które ograniczają typ.while: Pętla warunkowa na podstawie wyniku wyrażenia.
Słowa kluczowe zarezerwowane do przyszłego użytku
Poniższe słowa kluczowe nie mają jeszcze żadnej funkcjonalności, ale są zarezerwowane przez Rust do potencjalnego przyszłego użytku:
abstractbecomeboxdofinalgenmacrooverrideprivtrytypeofunsizedvirtualyield
Surowe identyfikatory
Surowe identyfikatory to składnia, która pozwala używać słów kluczowych tam, gdzie normalnie nie byłoby to dozwolone. Surowy identyfikator używasz, poprzedzając słowo kluczowe r#.
Na przykład, match jest słowem kluczowym. Jeśli spróbujesz skompilować następującą funkcję, która używa match jako swojej nazwy:
Nazwa pliku: src/main.rs
fn match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
otrzymasz następujący błąd:
błąd: oczekiwano identyfikatora, znaleziono słowo kluczowe `match`
--> src/main.rs:4:4
|
4 | fn match(needle: &str, haystack: &str) -> bool {
| ^^^^^ oczekiwano identyfikatora, znaleziono słowo kluczowe
Błąd pokazuje, że nie możesz użyć słowa kluczowego match jako identyfikatora funkcji. Aby użyć match jako nazwy funkcji, musisz użyć składni surowego identyfikatora, tak jak tutaj:
Nazwa pliku: src/main.rs
fn r#match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
fn main() {
assert!(r#match("foo", "foobar"));
}
Ten kod skompiluje się bez żadnych błędów. Zwróć uwagę na prefiks r# w nazwie funkcji w jej definicji, a także tam, gdzie funkcja jest wywoływana w main.
Surowe identyfikatory pozwalają używać dowolnego słowa jako identyfikatora, nawet jeśli to słowo jest zarezerwowanym słowem kluczowym. Daje to nam większą swobodę w wyborze nazw identyfikatorów, a także umożliwia integrację z programami napisanymi w języku, w którym te słowa nie są słowami kluczowymi. Ponadto, surowe identyfikatory pozwalają używać bibliotek napisanych w innej edycji Rust niż ta, której używa twoja skrzynka. Na przykład, try nie jest słowem kluczowym w edycji 2015, ale jest w edycjach 2018, 2021 i 2024. Jeśli zależy Ci na bibliotece napisanej w edycji 2015 i ma ona funkcję try, będziesz musiał użyć składni surowego identyfikatora, w tym przypadku r#try, aby wywołać tę funkcję z kodu w późniejszych edycjach. Więcej informacji na temat edycji znajdziesz w Dodatku E.