Limbajul de programare Rust
Cuvânt înainte
Introducere
1.
Să începem
1.1.
Instalare
1.2.
Salut, lume!
1.3.
Salut, Cargo!
2.
Programarea unui joc de ghicit
3.
Concepte comune de programare
3.1.
Variabile și mutabilitate
3.2.
Tipuri de date
3.3.
Funcții
3.4.
Comentarii
3.5.
Controlul fluxului
4.
Înțelegerea posesiunii
4.1.
Ce este posesiunea?
4.2.
Referințe și procesul de împrumutare
4.3.
Tipul Slice
5.
Folosirea structurilor pentru organizarea datelor interconectate
5.1.
Definirea și crearea instanțelor de structuri
5.2.
Un program exemplu ce utilizează structurile
5.3.
Sintaxa pentru metode
6.
Enumerări și potrivirea modelelor
6.1.
Definirea unei enumerări
6.2.
Structura de control match
6.3.
Control concis al executării cu if let
7.
Administrarea proiectelor în expansiune cu ajutorul pachetelor, crate-urilor și modulelor
7.1.
Pachete și crate-uri
7.2.
Stabilirea modulelor pentru a gestiona domeniul de vizibilitate și confidențialitatea
7.3.
Utilizarea căilor pentru a face referire la un element în structura de module
7.4.
Utilizarea cuvântului cheie use pentru a aduce căile în domeniul de vizibilitate
7.5.
Separarea modulelor în diferite fișiere
8.
Colecțiile comune în Rust
8.1.
Păstrarea listelor de valori folosind vectori
8.2.
Manipularea textelor codate UTF-8 utilizând string-uri
8.3.
Utilizarea hash map-urilor pentru a asocia chei cu valori
9.
Tratarea erorilor
9.1.
Gestionarea erorilor irecuperabile cu panic!
9.2.
Gestionarea erorilor recuperabile cu Result
9.3.
Să panic!-ăm sau nu?
10.
Tipuri generice, trăsături și durate de viață
10.1.
Tipuri de date generice
10.2.
Traits: definirea comportamentului partajat
10.3.
Validarea referințelor cu ajutorul lifetimes
11.
Testare automatizată în Rust
11.1.
Cum să scriem teste
11.2.
Controlul modului în care testele sunt executate
11.3.
Organizarea testării
12.
Un proiect de I/O: Construirea unei aplicații de linie de comandă
12.1.
Acceptarea argumentelor liniei de comandă
12.2.
Citirea fișierului
12.3.
Refactorizarea pentru îmbunătățirea modularității și gestionarea erorilor
12.4.
Dezvoltarea funcționalității bibliotecii cu Test-Driven Development
12.5.
Interacționând cu variabilele de mediu
12.6.
Afișarea mesajelor de eroare pe eroare standard în loc de ieșire standard
13.
Elemente de programare funcțională în Rust: închideri și iteratori
13.1.
Închideri: funcții anonime care captează contextul
13.2.
Procesarea unei serii de elemente cu ajutorul iteratorilor
13.3.
Îmbunătățim proiectul nostru I/O
13.4.
Comparând performanța buclelor și a iteratorilor
14.
Mai multe informații despre Cargo și Crates.io
14.1.
Personalizarea build-urilor cu profile de release
14.2.
Publicarea unui crate pe crates.io
14.3.
Spațiile de lucru Cargo
14.4.
Instalarea binarelor cu cargo install
14.5.
Extinderea Cargo cu Comenzi Personalizate
15.
Pointeri inteligenți
15.1.
Utilizarea Box<T> pentru a arăta spre date situate pe heap
15.2.
Tratarea pointerilor inteligenți la fel ca referințele obișnuite cu trăsătura Deref
15.3.
Executarea codului în etapa de curățare cu trăsătura Drop
15.4.
Rc<T>, pointerul inteligent cu numărare a referențelor
15.5.
RefCell<T> și mutabilitatea internă
15.6.
Ciclurile de referințe pot provoca scurgeri de memorie
16.
Concurență fără temeri
16.1.
Utilizarea firelor de execuție pentru a executa cod simultan
16.2.
Transferul datelor între fire de execuție cu pasare de mesaje
16.3.
Concurență cu stare partajată
16.4.
Extinderea concurenței cu trăsăturile Sync și Send
17.
Caracteristicile programării orientate pe obiecte în Rust
17.1.
Caracteristicile limbajelor orientate pe obiecte
17.2.
Utilizarea obiectelor-trăsătură pentru valori de diferite tipuri
17.3.
Implementarea unui pattern de design orientat pe obiecte
18.
Pattern-urile și potrivirea
18.1.
Toate locurile unde pattern-urile pot fi utilizate
18.2.
Refutabilitatea: când un pattern ar putea eșua la potrivire
18.3.
Sintaxa pattern-urilor
19.
Caracteristici avansate
19.1.
Rust unsafe
19.2.
Trăsături avansate
19.3.
Tipuri avansate
19.4.
Funcții și închideri avansate
19.5.
Macrocomenzi
20.
Proiect final: Dezvoltarea unui server web multi-thread
20.1.
Construirea unui server web cu un singur fir de execuție
20.2.
Transformarea serverului nostru single-threaded într-unul multithreaded
20.3.
Închiderea ordonată și curățarea
21.
Anexă
21.1.
Anexa A: Cuvinte cheie
21.2.
Anexa B: Operatori si simboluri
21.3.
Anexa C: Trăsături derivabile
21.4.
Anexa D - Unelte utile de dezvoltare
21.5.
Anexa E - Edițiile
21.6.
Anexa F: Traduceri ale cărții
21.7.
Anexa G - Procesul de dezvoltare al Rust și „Nightly Rust”
Lumină
Rugină
Cărbune
Marin
Ayu
Limbajul de programare Rust
Definirea unei enumerări