Wycinki
Pożyczone widoki
Wycinki to bezpłatna lekcja Learn Rust Coding na CoddyKit. To lekcja 2 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.
Czym jest wycinek?
Wycinek to pożyczony widok na spójną część kolekcji. Nie posiada danych — wskazuje na dane już istniejące.
Wycinki zapisuje się, umieszczając zakres w nawiasach kwadratowych.
fn main() {
let arr = [1, 2, 3, 4, 5];
let part = &arr[1..4];
println!("{:?}", part);
}Składnia zakresu wycinka
Zakresy wybierają indeks początkowy i końcowy. Koniec jest wyłączny.
&v[1..4]— indeksy 1, 2 i 3.&v[..3]— od początku do indeksu 3.&v[2..]— od indeksu 2 do końca.
fn main() {
let v = vec![10, 20, 30, 40];
println!("{:?}", &v[..2]);
println!("{:?}", &v[2..]);
}Wycinki napisów
Wycinek napisu &str jest widokiem na część wartości String. Zakresy indeksów określa się w bajtach.
fn main() {
let s = String::from("hello world");
let hello = &s[0..5];
let world = &s[6..11];
println!("{} {}", hello, world);
}Wycinki całej kolekcji
Użyj &v[..], aby utworzyć wycinek obejmujący całą kolekcję. Tak wektor Vec jest pożyczany jako wycinek.
fn main() {
let v = vec![1, 2, 3];
let whole = &v[..];
println!("{:?}", whole);
}Wycinki jako parametry
Funkcje przyjmujące &[T] akceptują zarówno tablice, jak i wektory. Dzięki temu są elastyczne.
fn sum(items: &[i32]) -> i32 {
let mut total = 0;
for x in items {
total += x;
}
total
}
fn main() {
let v = vec![1, 2, 3];
let a = [4, 5, 6];
println!("{} {}", sum(&v), sum(&a));
}Wycinki pożyczają, nie posiadają
Ponieważ wycinek pożycza dane, oryginalna kolekcja musi istnieć przez cały czas jego używania. Kompilator wymusza tę zasadę.
fn main() {
let v = vec![100, 200, 300];
let s = &v[0..2];
println!("slice {:?}, original {:?}", s, v);
}Długość wycinka
Podobnie jak inne kolekcje, wycinki mają metodę len(), która zwraca liczbę elementów objętych wycinkiem.
fn main() {
let v = vec![5, 6, 7, 8, 9];
let middle = &v[1..4];
println!("length {}", middle.len());
}first i last
Wycinki udostępniają metody first() i last(), zwracające wartości typu Option, dzięki czemu puste wycinki są bezpiecznie obsługiwane.
fn main() {
let data = [10, 20, 30];
let s = &data[..];
println!("{:?} {:?}", s.first(), s.last());
}Iterowanie po wycinku
Po wycinku można iterować tak samo jak po każdej kolekcji.
fn main() {
let v = vec![1, 2, 3, 4];
for x in &v[1..3] {
println!("{}", x);
}
}Funkcja zwracająca pierwsze słowo
Częsty przypadek użycia wycinka: zwrócenie wycinka istniejącego tekstu, na przykład pierwszego słowa zdania.
fn first_word(s: &str) -> &str {
let bytes = s.as_bytes();
for (i, &b) in bytes.iter().enumerate() {
if b == b' ' {
return &s[0..i];
}
}
s
}
fn main() {
println!("{}", first_word("hello there"));
}Dlaczego wycinki są bezpieczne
Wycinki pozwalają uniknąć kopiowania danych, jednocześnie zapobiegając powstawaniu wiszących referencji. Pożyczający sprawdza, czy dane źródłowe istnieją dłużej niż wycinek.
fn main() {
let words = vec!["a", "b", "c", "d"];
let pair = &words[1..3];
println!("{:?}", pair);
}Szybkie sprawdzenie
Przypomnij sobie, co reprezentuje wycinek.
Podsumowanie
Wycinki w Rust:
- Pożyczony widok:
&v[start..end], z wyłącznym końcem zakresu. &strto wycinek napisu, a&[T]to wycinek tablicy lub wektora.- Parametry typu wycinka akceptują zarówno tablice, jak i wektory.
- Pożyczający zapewnia bezpieczeństwo wycinków.
fn average(nums: &[i32]) -> i32 {
nums.iter().sum::<i32>() / nums.len() as i32
}
fn main() {
let v = vec![4, 8, 12];
println!("{}", average(&v[..]));
}Ucz się Rust dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 39
- Lekcje
- 144
Często zadawane pytania
Czy lekcja „Wycinki” jest bezpłatna?
Tak — pełny tekst „Wycinki” 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 „Wycinki”?
Pożyczone widoki Ć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 2 z 4.
Ile czasu zajmuje lekcja „Wycinki”?
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.