Wiązanie za pomocą @
Przechwytywanie i testowanie
Wiązanie za pomocą @ to bezpłatna lekcja Learn Rust Coding na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn Rust Coding, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.
Operator wiązania @
Operator @ pozwala jednocześnie sprawdzić wartość względem wzorca i związać ją z nazwą. Otrzymują Państwo zarówno sprawdzenie, jak i wartość.
Rozwiązywany problem
Wzorzec zakresu informuje, że wartość mieści się w zakresie, ale traci się dostęp do konkretnej wartości. @ przechwytuje ją, jednocześnie nadal sprawdzając zakres.
Podstawowe wiązanie za pomocą @
W tym przykładzie dopasowujemy liczbę z zakresu i zachowujemy jej dokładną wartość za pomocą id.
fn main() {
let n = 5;
match n {
id @ 1..=5 => println!("got {id} in range"),
_ => println!("out of range"),
}
}Bez @
Dla porównania: zwykłe ramię zakresu dopasowuje wartość, ale nie może nadać jej nazwy, więc nie można wyświetlić, która liczba została dopasowana.
fn main() {
let n = 5;
match n {
1..=5 => println!("in range (value unknown here)"),
_ => println!("out of range"),
}
}@ z danymi enumu
Można związać pole i jednocześnie narzucić jego ograniczenie. Tutaj przechwytujemy id tylko wtedy, gdy mieści się w prawidłowym zakresie.
enum Message {
Hello { id: i32 },
}
fn main() {
let msg = Message::Hello { id: 7 };
match msg {
Message::Hello { id: id @ 3..=10 } => {
println!("valid id {id}");
}
Message::Hello { id } => {
println!("other id {id}");
}
}
}Wiązanie całej wartości
@ może także wiązać całą ustrukturyzowaną wartość, podczas gdy zagnieżdżony wzorzec sprawdza jej części.
fn main() {
let point = (3, 4);
match point {
p @ (x, _) if x > 0 => println!("{:?} has positive x", p),
p => println!("{:?}", p),
}
}Łączenie z |
Można wiązać wartości w alternatywnych wzorcach. Nazwa musi występować w każdej gałęzi alternatywy.
fn main() {
let code = 404;
match code {
c @ (400 | 404 | 500) => println!("error code {c}"),
c => println!("code {c}"),
}
}@ w if let
Wiązania z użyciem @ działają również w if let.
fn main() {
let value = Some(50);
if let Some(n @ 1..=100) = value {
println!("in range: {n}");
}
}Kiedy używać @
Operatora @ należy używać, gdy potrzebne są obie rzeczy:
- Ograniczenie wartości za pomocą zakresu lub podwzorca
- Użycie tej dokładnej wartości w treści ramienia
Jeśli nie są potrzebne obie funkcje, prostsze będzie zwykłe wiązanie lub wzorzec.
Czytelność
Ta forma ma postać name @ pattern: wiąż name, jeśli pasuje do pattern. Nazwy powinny być opisowe, aby intencja była jasna.
Grupowanie za pomocą @
Typowym zastosowaniem jest przypisywanie wartości do oznaczonych grup przy jednoczesnym zachowaniu oryginalnej liczby na potrzeby raportowania.
fn classify(temp: i32) -> String {
match temp {
t @ ..=0 => format!("freezing ({t})"),
t @ 1..=20 => format!("cool ({t})"),
t @ 21..=30 => format!("warm ({t})"),
t => format!("hot ({t})"),
}
}
fn main() {
println!("{}", classify(25));
}Szybkie sprawdzenie
Co robi operator @ we wzorcu takim jak id @ 1..=5?
Podsumowanie
Poznano operator wiązania @:
- Wiąże wartość z nazwą podczas sprawdzania jej względem wzorca
- Rozwiązuje problem utraty wartości przy wzorcach zakresów
- Działa z danymi enumów, krotkami, alternatywami
|orazif let - Należy go używać, gdy potrzebne są zarówno ograniczenie, jak i wartość
Często zadawane pytania
Czy lekcja „Wiązanie za pomocą @” jest bezpłatna?
Tak — pełny tekst „Wiązanie za pomocą @” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn Rust Coding, przejdź na CoddyKit PRO. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.
Co nauczysz się w „Wiązanie za pomocą @”?
Przechwytywanie i testowanie Ćwiczysz Learn Rust Coding z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn Rust Coding?
Nie wymagamy żadnego doświadczenia. Learn Rust Coding w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wiązanie za pomocą @”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn Rust Coding?
Tak. Każda lekcja Learn Rust Coding zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- match — szczegółowe omówienie
- if let i while let
- Wiązanie za pomocą @
- Destrukturyzacja