Biblioteka standardowa Rusta ma większość struktur (Vec, VecDeque, HashMap, BTreeMap, BinaryHeap), a borrow checker ma swoje zdanie o tych, które piszesz samodzielnie: lista jednokierunkowa to Option<Box<Node>>, a drzewo z odnośnikami do rodzica wymaga Rc, RefCell i Weak. W tej ścieżce budujesz każdą strukturę w Rust, potem sortujesz, stosujesz rekurencję i przeszukujesz z nimi grafy, a na koniec rozwiązujesz oceniane zadania rekrutacyjne. Za darmo, w przeglądarce, z certyfikatem w większości kursów.
Każdy krok to zestaw istniejących kursów Coddy, a każdy przycisk Start otwiera je w Rust. Trzy kursy, które nie są jeszcze prowadzone w Rust, są wymienione po krokach.
1
Krok 1
Seria Struktury danych, część pierwsza
Zacznij ten krokZacznijStos, kolejka, drzewo binarne, tablica mieszająca i lista wiązana, każda struktura zbudowana od zera w Rust, a potem użyta do rozwiązywania zadań. W Rust węzeł, który jest właścicielem następnego, to Option<Box<Node>>, więc właśnie tu własność zaczyna wydawać się naturalna, a po tym kroku wiesz, co robią za ciebie Vec, VecDeque i HashMap.Zacznij
Zacznij ten krokZacznijLista dwukierunkowa, kopce i kolejki priorytetowe, drzewa trie, grafy i samorównoważące się drzewo AVL. Lista dwukierunkowa jest w Rust tą trudną, bo do każdego węzła prowadzą dwa połączenia. Po tym kroku BinaryHeap to kopiec, którego kod znasz, domyślnie z największym elementem na początku, a BTreeMap to uporządkowane drzewo, które rozumiesz.Zacznij
Zacznij ten krokZacznijSortowanie bąbelkowe, przez wybieranie, przez wstawianie, przez scalanie, szybkie, przez kopcowanie, przez zliczanie i pozycyjne, napisane w Rust i oglądane w wizualizatorze. sort jest stabilne, a sort_unstable zwykle szybsze. Po tym kroku potrafisz powiedzieć, ile kosztuje stabilność i kiedy z niej zrezygnować.Zacznij
Zacznij ten krokZacznijWyzwania z rekurencji w Rust. Typ rekurencyjny potrzebuje Box, zanim kompilator nada mu rozmiar, a funkcja rekurencyjna działająca na nim dopasowuje każdy przypadek, Some albo None, tak jak dzielą się przypadek bazowy i rekurencyjny. Rust nie obiecuje optymalizacji wywołań ogonowych, więc wystarczająco głęboka rekurencja przepełnia stos i przerywa program. Programowanie dynamiczne i operacje na bitach są wymienione po krokach, bo prowadzi się je w Pythonie i C++.ZacznijOsobna strona15 lekcje15 wyzwania
5
Krok 5
Algorytmy grafowe
Zacznij ten krokZacznijPrzeszukiwanie wszerz i w głąb, Dijkstra, Bellman-Ford, sortowanie topologiczne, Kruskal i Prim w Rust, na grafie zbudowanym w kroku drugim. Kolejka priorytetowa w algorytmie Dijkstry to w Rust BinaryHeap z Reverse((distance, node)): kopiec z kroku drugiego zamieniony w kopiec minimalny.Zacznij
Zacznij ten krokZacznijDziesięć pakietów wyzwań rekrutacyjnych i dwa banki zadań programistycznych w Rust, oceniane przez testy: nieznane zadania rozwiązywane bez samouczka i z akceptacją borrow checkera, co samo w sobie jest dowodem.Zacznij
Wszystko, czego potrzebujesz do nauki programowania
Ucz się w praktyce
Pisz prawdziwy kod, odpytuj bazy danych, twórz strony internetowe i opanuj prompty AI. Nasze interaktywne lekcje obejmują wszystkie umiejętności, których potrzebuje współczesny programista.
playground.js
Edytor kodu
1const greeting ="Hello, Coddy!"
2function sayHi(name) {
3return greeting +" "+ name
4}
5
Test #1
Test #2
Test #3
Dane wejściowe
"Alex"
Wynik
"Hello, Coddy! Alex"
Buduj swoją serię
Ucz się regularnie i patrz, jak rosną twoje postępy! Śledź codzienny nawyk programowania, chroń serię dzięki zamrożeniom i zdobywaj nagrody za każdy dzień nauki.
12 dni serii
Wróć jutro, aby utrzymać serię!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
Podwójnie albo nic
Dzień 5 z 7
Zamrożenie serii
2 left
Programuj wszędzie
Zabierz naukę programowania ze sobą! Bez konfiguracji i pobierania plików: po prostu otwórz i zacznij kodować. Dostępne na iOS, Androida i w przeglądarce, z oceną 4,9 gwiazdki.
Dlaczego warto uczyć się algorytmów w Rust z Coddy
Własność tam, gdzie jest najtrudniejsza. Listy wiązane i drzewa to miejsce, w którym reguły Rusta gryzą najpierw: każda wartość ma jednego właściciela, a te struktury potrzebują węzłów wskazujących na siebie nawzajem. Pisząc je, sprawiasz, że Box, Option::take, Rc<RefCell<T>> i Weak przestają być składnią i stają się decyzjami. Nie bez powodu znany przewodnik po tym języku nosi tytuł Learning Rust With Entirely Too Many Linked Lists.
Kolekcje o jasnych kosztach. Vec<T> to twój stos, VecDeque<T> to bufor cykliczny i twoja kolejka, HashMap to tablica mieszająca zabezpieczona przed celowymi kolizjami, BTreeMap to uporządkowane B-drzewo, a BinaryHeap<T> to kopiec maksymalny. Zbuduj struktury raz, a będziesz wiedzieć, której potrzebuje zadanie i dlaczego algorytm Dijkstry opakowuje swoje wpisy w Reverse.
Prawie cała ścieżka w Rust. Każda struktura danych, sortowanie, algorytm grafowy, wyzwanie z rekurencji i pakiet rekrutacyjny jest prowadzony w Rust. Trzy kursy są prowadzone w innych językach i wymienione po krokach, każdy z linkiem: programowanie dynamiczne i seria rekrutacyjna w Pythonie oraz operacje na bitach w C++. Operacje na bitach przenoszą się z jedną zmianą zapisu: Rust zapisuje NOT jako !x, a ustawione bity liczy przez count_ones().
Oceniane jak na rozmowie rekrutacyjnej. Każda lekcja kończy się wyzwaniem w Rust sprawdzanym przez testy, a gdy coś nie przechodzi albo się nie kompiluje, Bugsy czyta twój kod i naprowadza cię na poprawkę, nie podając gotowej odpowiedzi. Darmowy certyfikat w większości kursów, każdy do zweryfikowania pod własnym adresem URL.
Najczęstsze pytania o algorytmy i struktury danych w Rust
Czy Rust nadaje się do nauki algorytmów i struktur danych?
Do korzystania z nich bardzo: standardowe kolekcje są szybkie i dobrze udokumentowane, sort jest stabilne, a bezpieczny Rust wyklucza wiszące wskaźniki i wyścigi danych już na etapie kompilacji, bez garbage collectora. Pisanie struktur opartych na wskaźnikach jest trudniejsze niż w C czy Javie, bo własność wyklucza współdzielone, mutowalne połączenia, chyba że świadomie sięgniesz po Rc i RefCell, a lista dwukierunkowa czy drzewo ze wskaźnikami do rodzica składają się właśnie z nich. Ta trudność jest też lekcją: gdy potrafisz je napisać w Rust, wiesz dokładnie, kto jest właścicielem czego.
Które kolekcje Rusta odpowiadają którym strukturom danych?
Vec<T> to tablica dynamiczna i twój stos, VecDeque<T> to bufor cykliczny i twoja kolejka, HashMap i HashSet to tablice mieszające (domyślnie SipHash, odporny na celowe kolizje kosztem pewnej szybkości), BTreeMap i BTreeSet to uporządkowane B-drzewa, BinaryHeap<T> to kopiec maksymalny, a LinkedList<T> to lista dwukierunkowa, którą rzadko wybierzesz zamiast Vec czy VecDeque. Nie ma typu drzewa trie ani grafu, te budujesz samodzielnie.
Dlaczego listę wiązaną tak trudno napisać w Rust?
Bo każda wartość ma dokładnie jednego właściciela. Lista jednokierunkowa pasuje do tej reguły: każdy węzeł jest właścicielem następnego przez Option<Box<Node>>. Lista dwukierunkowa albo drzewo z odnośnikami do rodzica już nie, bo do każdego węzła prowadzą dwa wskaźniki, więc sięgasz po Rc<RefCell<Node>> z Weak dla odnośników wstecznych albo trzymasz węzły w Vec i łączysz je indeksami. Learning Rust With Entirely Too Many Linked Lists powstał dlatego, że tak wiele osób utyka właśnie tutaj.
Jak uzyskać kopiec minimalny w Rust?
BinaryHeap<T> to kopiec maksymalny, więc opakuj każdy element w std::cmp::Reverse: wstaw Reverse(x), a najmniejsze x wyjdzie pierwsze. W algorytmie Dijkstry wstawiaj Reverse((distance, node)), a krotka porówna się najpierw po odległości. Gdy w kroku drugim samodzielnie napiszesz kopiec, odwrócenie jego porządku staje się oczywiste.
Które kursy z tej ścieżki nie są prowadzone w Rust?
Trzy: programowanie dynamiczne i seria rekrutacyjna w Pythonie, prowadzone w Pythonie, oraz operacje na bitach, prowadzone w C++. Są wymienione po krokach, każdy z linkiem, który otwiera go w jego własnym języku. Tablica memoizacji w Rust to Vec albo HashMap, a przepełnienie liczby całkowitej w kompilacji debug wywołuje panikę, więc sztuczka bitowa, która polega na zawijaniu, zapisuje to jawnie przez wrapping_add albo wrapping_mul.
Czy muszę znać Rusta, zanim zacznę tę ścieżkę?
Przynajmniej własność, pożyczanie, struktury, typy wyliczeniowe i Option. Box i traity pomagają. Jeśli to dla ciebie nowość, kurs Rusta w Coddy najpierw cię tam doprowadzi, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.
Czy dostanę certyfikat za ścieżkę Algorytmy i struktury danych?
Tak. Ukończ każdy krok, a dostaniesz jeden darmowy certyfikat za całą ścieżkę Algorytmy i struktury danych. Wymienia on każdy kurs ukończony po drodze oraz linkuje do certyfikatu każdego kursu, więc każdy może sprawdzić każdą wymienioną umiejętność. Możesz dodać go do profilu na LinkedInie. To certyfikat ukończenia od Coddy, a nie akredytowana kwalifikacja.
Inne ścieżki nauki
Te same kursy, ułożone pod inną rolę. Postępy się przenoszą: kurs ukończony na jednej ścieżce liczy się na każdej ścieżce, która go zawiera.