diff --git a/po/uk.po b/po/uk.po
index a1608c7e..e090299e 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -2129,7 +2129,7 @@ msgid ""
 "`continue`."
 msgstr ""
 "Конструкції потоку керування: `if`, `if let`, `while`, `while let`, `break` "
-"і `continue`."
+"та `continue`."
 
 #: src/welcome-day-1.md:12
 msgid "Pattern matching: destructuring enums, structs, and arrays."
@@ -2143,14 +2143,14 @@ msgstr "Нагадайте учням, що:"
 msgid ""
 "They should ask questions when they get them, don't save them to the end."
 msgstr ""
-"Вони повинні задавати питання, коли вони їх отримають, не зберігайте їх до "
+"Вони повинні задавати питання, коли вони їх мають, а не зберігають їх до "
 "кінця."
 
 #: src/welcome-day-1.md:19
 msgid ""
 "The class is meant to be interactive and discussions are very much "
 "encouraged!"
-msgstr "Клас має бути інтерактивним, тому дискусії дуже заохочуються!"
+msgstr "Клас має на меті бути інтерактивним, тому дискусії дуже заохочуються!"
 
 #: src/welcome-day-1.md:20
 msgid ""
@@ -2161,10 +2161,10 @@ msgid ""
 "communication."
 msgstr ""
 "Як інструктор, ви повинні намагатися підтримувати обговорення актуальними, "
-"тобто підтримувати обговорення, пов’язані з тим, як Rust щось робить проти "
-"іншої мови. Може бути важко знайти правильний баланс, але дозвольте "
-"обговорення, оскільки вони залучають людей набагато більше, ніж одностороннє "
-"спілкування."
+"тобто підтримувати обговорення, пов’язані з тим, як Rust щось робить на "
+"відміну від іншої мови. Може бути важко знайти правильний баланс, але "
+"дозволяйте обговорення, оскільки вони залучають людей набагато більше, ніж "
+"одностороннє спілкування."
 
 #: src/welcome-day-1.md:24
 msgid ""
@@ -2180,7 +2180,7 @@ msgid ""
 "you like."
 msgstr ""
 "Це цілком нормально! Повторення є важливою частиною навчання. Пам’ятайте, що "
-"слайди є лише підтримкою, і ви можете пропускати їх, як забажаєте."
+"слайди є лише підтримкою, і ви можете пропускати їх, якщо забажаєте."
 
 #: src/welcome-day-1.md:29
 msgid ""
@@ -2221,7 +2221,7 @@ msgid ""
 "Rust is a new programming language which had its [1.0 release in 2015]"
 "(https://blog.rust-lang.org/2015/05/15/Rust-1.0.html):"
 msgstr ""
-"Rust — це нова мова програмування, яка випустила [1.0 у 2015 році](https://"
+"Rust — це нова мова програмування, яка мала [1.0 випуск у 2015 році](https://"
 "blog.rust-lang.org/2015/05/15/Rust-1.0.html):"
 
 #: src/welcome-day-1/what-is-rust.md:5
@@ -2231,7 +2231,7 @@ msgstr ""
 
 #: src/welcome-day-1/what-is-rust.md:6
 msgid "`rustc` uses LLVM as its backend."
-msgstr "`rustc` використовує LLVM як серверну частину."
+msgstr "`rustc` використовує LLVM як бекенд."
 
 #: src/welcome-day-1/what-is-rust.md:7
 msgid ""
@@ -2267,15 +2267,15 @@ msgstr "мобільні телефони,"
 
 #: src/welcome-day-1/what-is-rust.md:15
 msgid "desktops,"
-msgstr "робочі столи,"
+msgstr "робочі станції,"
 
 #: src/welcome-day-1/what-is-rust.md:16
 msgid "servers."
-msgstr "серверів."
+msgstr "сервери."
 
 #: src/welcome-day-1/what-is-rust.md:21
 msgid "Rust fits in the same area as C++:"
-msgstr "Rust відповідає тій самій області, що й C++:"
+msgstr "Rust вписується в ту ж саму область, що й C++:"
 
 #: src/welcome-day-1/what-is-rust.md:23
 msgid "High flexibility."
@@ -2288,7 +2288,8 @@ msgstr "Високий рівень контролю."
 #: src/welcome-day-1/what-is-rust.md:25
 msgid ""
 "Can be scaled down to very constrained devices such as microcontrollers."
-msgstr "Можна зменшити до дуже обмежених пристроїв, таких як мікроконтролери."
+msgstr ""
+"Може бути зменьшений до дуже обмежених пристроїв, таких як мікроконтролери."
 
 #: src/welcome-day-1/what-is-rust.md:26
 msgid "Has no runtime or garbage collection."
@@ -2296,7 +2297,7 @@ msgstr "Не має часу виконання або збирання сміт
 
 #: src/welcome-day-1/what-is-rust.md:27
 msgid "Focuses on reliability and safety without sacrificing performance."
-msgstr "Зосереджено на надійності та безпеці без шкоди для продуктивності."
+msgstr "Зосереджений на надійності та безпеці без шкоди для продуктивності."
 
 #: src/hello-world.md:3
 msgid ""
@@ -2316,7 +2317,7 @@ msgstr ""
 
 #: src/hello-world.md:12
 msgid "What you see:"
-msgstr "Що ти бачиш:"
+msgstr "Що ви бачите:"
 
 #: src/hello-world.md:14
 msgid "Functions are introduced with `fn`."
@@ -2337,7 +2338,7 @@ msgstr "Rust має гігієнічні макроси, `println!` є прик
 #: src/hello-world.md:18
 msgid "Rust strings are UTF-8 encoded and can contain any Unicode character."
 msgstr ""
-"Рядки Rust мають кодування UTF-8 і можуть містити будь-які символи Unicode."
+"Рядки в Rust мають кодування UTF-8 і можуть містити будь-які символи Unicode."
 
 #: src/hello-world.md:22
 msgid ""
@@ -2347,15 +2348,15 @@ msgid ""
 msgstr ""
 "Цей слайд спрямований на те, щоб студенти звикли працювати з кодом Rust. "
 "Вони побачать масу цього протягом наступних трьох днів, тож ми починаємо з "
-"малого з чогось знайомого."
+"чогось малого та знайомого."
 
 #: src/hello-world.md:27
 msgid ""
 "Rust is very much like other languages in the C/C++/Java tradition. It is "
 "imperative and it doesn't try to reinvent things unless absolutely necessary."
 msgstr ""
-"Rust дуже схожий на інші мови традиції C/C++/Java. Це обов’язково, і воно не "
-"намагається винайти щось заново, якщо це не є абсолютно необхідним."
+"Rust дуже схожий на інші традиціїні мови як C/C++/Java. Це навмисно, і він "
+"не намагається винайти щось заново, якщо це не є абсолютно необхідним."
 
 #: src/hello-world.md:31
 msgid "Rust is modern with full support for things like Unicode."
@@ -2367,8 +2368,8 @@ msgid ""
 "arguments (no function [overloading](basic-syntax/functions-interlude.md))."
 msgstr ""
 "Rust використовує макроси для ситуацій, коли потрібно мати змінну кількість "
-"аргументів (немає функції [перевантаження](basic-syntax/functions-interlude."
-"md))."
+"аргументів (немає [перевантаження](basic-syntax/functions-interlude.md) "
+"функцій)."
 
 #: src/hello-world.md:36
 msgid ""
@@ -2377,7 +2378,7 @@ msgid ""
 "hygienic](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene."
 "html)."
 msgstr ""
-"Макроси є «гігієнічними» означає, що вони випадково не захоплюють "
+"Макроси є «гігієнічними» що означає, що вони випадково не захоплюють "
 "ідентифікатори з області, у якій вони використовуються. Макроси Rust "
 "насправді лише [частково гігієнічні](https://veykril.github.io/tlborm/decl-"
 "macros/minutiae/hygiene .html)."
@@ -2389,7 +2390,7 @@ msgid ""
 "while it is not a functional language, it includes a range of [functional "
 "concepts](https://doc.rust-lang.org/book/ch13-00-functional-features.html)."
 msgstr ""
-"Іржа є мультипарадигмою. Наприклад, він має потужні [функції об’єктно-"
+"Rust є мультипарадигмою. Наприклад, він має потужні [функції об’єктно-"
 "орієнтованого програмування](https://doc.rust-lang.org/book/ch17-00-oop."
 "html), і, хоча це не функціональна мова, він включає діапазон "
 "[функціональних понять](https://doc.rust-lang.org/book/ch13-00-functional-"
@@ -2425,7 +2426,7 @@ msgid ""
 "different inputs."
 msgstr ""
 "Код реалізує гіпотезу Коллатца: вважається, що цикл завжди закінчується, але "
-"це ще не доведено. Редагуйте код і грайте з різними введеннями."
+"це ще не доведено. Редагуйте код та пограйте з різними введеннями."
 
 #: src/hello-world/small-example.md:29
 msgid ""
@@ -2496,8 +2497,8 @@ msgid ""
 "Make sure to ask the class which languages they have experience with. "
 "Depending on the answer you can highlight different features of Rust:"
 msgstr ""
-"Обов’язково запитайте в класу, якими мовами вони мають досвід. Залежно від "
-"відповіді ви можете виділити різні функції Rust:"
+"Обов’язково запитайте клас, з якими мовами вони мають досвід. Залежно від "
+"відповіді ви можете виділити різні особливості Rust:"
 
 #: src/why-rust.md:14
 msgid ""
@@ -2521,13 +2522,13 @@ msgid ""
 msgstr ""
 "Досвід роботи з Java, Go, Python, JavaScript...: Ви отримуєте таку саму "
 "безпеку пам’яті, що й у цих мовах, а також подібне відчуття мови високого "
-"рівня. Крім того, ви отримуєте швидку та передбачувану продуктивність, як-от "
-"C і C++ (без збирача сміття), а також доступ до апаратного забезпечення "
-"низького рівня (якщо воно вам знадобиться)"
+"рівня. Крім того, ви отримуєте швидку та передбачувану продуктивність як C і "
+"C++ (без збиральника сміття), а також доступ низького рівня до апаратного "
+"забезпечення (якщо воно вам знадобиться)"
 
 #: src/why-rust/compile-time.md:3
 msgid "Static memory management at compile time:"
-msgstr "Керування статичною пам'яттю під час компіляції:"
+msgstr "Cтатичне керування пам'яттю під час компіляції:"
 
 #: src/why-rust/compile-time.md:5
 msgid "No uninitialized variables."
@@ -2535,7 +2536,7 @@ msgstr "Немає неініціалізованих змінних."
 
 #: src/why-rust/compile-time.md:6
 msgid "No memory leaks (_mostly_, see notes)."
-msgstr "Немає витоків пам'яті (_переважно_, див. примітки)."
+msgstr "Немає витоків пам'яті (_переважно_, дивитится примітки)."
 
 #: src/why-rust/compile-time.md:7
 msgid "No double-frees."
@@ -2543,7 +2544,7 @@ msgstr "Ніяких подвійних звільнень."
 
 #: src/why-rust/compile-time.md:8
 msgid "No use-after-free."
-msgstr "Без використання після безкоштовного використання."
+msgstr "Немає використання після звільнення."
 
 #: src/why-rust/compile-time.md:9
 msgid "No `NULL` pointers."
@@ -2573,8 +2574,8 @@ msgid ""
 "initialized and runtime-sized static variables"
 msgstr ""
 "Ви можете використовувати [`Box::leak`](https://doc.rust-lang.org/std/boxed/"
-"struct.Box.html#method.leak) для витоку покажчика. Це може бути використано "
-"для отримання статичних змінних, ініціалізованих під час виконання та "
+"struct.Box.html#method.leak) для витоку вказівника. Це може бути використано "
+"для отримання статичних змінних, ініціалізованих під час виконання та з "
 "розміром під час виконання"
 
 #: src/why-rust/compile-time.md:21
@@ -2600,7 +2601,7 @@ msgid ""
 "In fact, some will consider infinitely populating a collection a memory leak "
 "and Rust does not protect from those."
 msgstr ""
-"Фактично, дехто вважатиме нескінченне заповнення колекції витоком пам’яті, а "
+"По факту, дехто вважатиме нескінченне заповнення колекції витоком пам’яті, і "
 "Rust від цього не захищає."
 
 #: src/why-rust/compile-time.md:28
@@ -2608,8 +2609,8 @@ msgid ""
 "For the purpose of this course, \"No memory leaks\" should be understood as "
 "\"Pretty much no _accidental_ memory leaks\"."
 msgstr ""
-"Для цілей цього курсу «Немає витоків пам’яті» слід розуміти як «Практично "
-"немає _випадкових_ витоків пам’яті»."
+"Для цілей цього курсу «Немає витоків пам’яті» слід розуміти як «Майже ніяких "
+"_випадкових_ витоків пам’яті»."
 
 #: src/why-rust/runtime.md:3
 msgid "No undefined behavior at runtime:"
@@ -2621,7 +2622,8 @@ msgstr "Доступ до масиву перевірено на межі."
 
 #: src/why-rust/runtime.md:6
 msgid "Integer overflow is defined (panic or wrap-around)."
-msgstr "Визначається цілочисельне переповнення (паніка або обертання)."
+msgstr ""
+"Поведінка цілочисельного переповнення визначена (паніка або обертання)."
 
 #: src/why-rust/runtime.md:12
 msgid ""
@@ -2634,7 +2636,7 @@ msgid ""
 msgstr ""
 "Цілочисельне переповнення визначається за допомогою позначки [`overflow-"
 "checks`](https://doc.rust-lang.org/rustc/codegen-options/index.html#overflow-"
-"checks) під час компіляції. Якщо ввімкнути, програма виникне паніка "
+"checks) під час компіляції. Якщо ввімкнене, програма буде панікувати "
 "(контрольований збій програми), інакше ви отримаєте семантику обертання. За "
 "замовчуванням ви отримуєте паніку в режимі налагодження (`cargo build`) і "
 "обертання в режимі випуску (`cargo build --release`)."
@@ -2646,10 +2648,10 @@ msgid ""
 "call functions such as `slice::get_unchecked` which does not do bounds "
 "checking."
 msgstr ""
-"Перевірку меж не можна вимкнути за допомогою позначки компілятора. Його "
-"також не можна вимкнути безпосередньо за допомогою ключового слова `unsafe`. "
-"Однак `unsafe` дозволяє викликати такі функції, як `slice::get_unchecked`, "
-"яка не виконує перевірку меж."
+"Перевірку меж не можна вимкнути за допомогою позначки компілятора. Ії також "
+"не можна вимкнути безпосередньо за допомогою ключового слова `unsafe`. Однак "
+"`unsafe` дозволяє викликати такі функції, як `slice::get_unchecked`, яка не "
+"виконує перевірку меж."
 
 #: src/why-rust/modern.md:3
 msgid "Rust is built with all the experience gained in the last decades."
@@ -2665,11 +2667,11 @@ msgstr "Переліки та зіставлення шаблонів."
 
 #: src/why-rust/modern.md:8
 msgid "Generics."
-msgstr "Дженерики."
+msgstr "Узагальнені типи."
 
 #: src/why-rust/modern.md:9
 msgid "No overhead FFI."
-msgstr "Без накладних FFI."
+msgstr "FFI без накладних витрат."
 
 #: src/why-rust/modern.md:10
 msgid "Zero-cost abstractions."
@@ -2681,7 +2683,7 @@ msgstr "Інструменти"
 
 #: src/why-rust/modern.md:14
 msgid "Great compiler errors."
-msgstr "Великі помилки компілятора."
+msgstr "Чудово деталізовані помилки компілятора."
 
 #: src/why-rust/modern.md:15
 msgid "Built-in dependency manager."
@@ -2693,7 +2695,7 @@ msgstr "Вбудована підтримка тестування."
 
 #: src/why-rust/modern.md:17
 msgid "Excellent Language Server Protocol support."
-msgstr "Чудова підтримка протоколу мовного сервера."
+msgstr "Чудова підтримка протоколу мовного сервера (LSP)."
 
 #: src/why-rust/modern.md:23
 msgid ""
@@ -2702,11 +2704,11 @@ msgid ""
 "writing a loop using `for` should result in roughly the same low level "
 "instructions as using the `.iter().fold()` construct."
 msgstr ""
-"Абстракції з нульовою вартістю, подібні до C++, означають, що вам не "
-"потрібно «платити» за конструкції програмування вищого рівня за допомогою "
-"пам’яті чи процесора. Наприклад, написання циклу за допомогою `for` має "
-"призвести до приблизно тих самих інструкцій низького рівня, що й "
-"використання конструкції `.iter().fold()`."
+"Абстракції без витрат, подібні до C++, означають, що вам не потрібно "
+"«платити» за конструкції програмування вищого рівня за допомогою пам’яті чи "
+"процесора. Наприклад, написання циклу за допомогою `for` має призвести до "
+"приблизно тих самих інструкцій низького рівня, що й використання конструкції "
+"`.iter().fold()`."
 
 #: src/why-rust/modern.md:28
 msgid ""
@@ -2716,7 +2718,7 @@ msgid ""
 msgstr ""
 "Можливо, варто згадати, що переліки Rust — це «алгебраїчні типи даних», "
 "також відомі як «типи сум», які дозволяють системі типів виражати такі речі, "
-"як «Option<T>» і «Result<T, E>»."
+"як «Option<T>» та «Result<T, E>»."
 
 #: src/why-rust/modern.md:32
 msgid ""
@@ -2725,10 +2727,10 @@ msgid ""
 "talkative than other compilers. It will often provide you with _actionable_ "
 "feedback, ready to copy-paste into your code."
 msgstr ""
-"Нагадайте людям прочитати помилки --- багато розробників звикли ігнорувати "
+"Нагадайте людям читати помилки --- багато розробників звикли ігнорувати "
 "довгий вихід компілятора. Компілятор Rust значно балакучіший, ніж інші "
-"компілятори. Він часто надає вам _дієві_ відгуки, готові скопіювати та "
-"вставити у ваш код."
+"компілятори. Він часто надає вам _дієві_ відгуки, готові до копіювання та "
+"вставки у ваш код."
 
 #: src/why-rust/modern.md:37
 msgid ""
@@ -2742,15 +2744,15 @@ msgstr ""
 
 #: src/why-rust/modern.md:41
 msgid "a random number generator, but see [rand](https://docs.rs/rand/)."
-msgstr "генератор випадкових чисел, але див. [rand](https://docs.rs/rand/)."
+msgstr "генератор випадкових чисел, але дивится [rand](https://docs.rs/rand/)."
 
 #: src/why-rust/modern.md:42
 msgid "support for SSL or TLS, but see [rusttls](https://docs.rs/rustls/)."
-msgstr "підтримка SSL або TLS, але див. [rusttls](https://docs.rs/rustls/)."
+msgstr "підтримка SSL або TLS, але дивится [rusttls](https://docs.rs/rustls/)."
 
 #: src/why-rust/modern.md:43
 msgid "support for JSON, but see [serde_json](https://docs.rs/serde_json/)."
-msgstr "підтримка JSON, але див. [serde_json](https://docs.rs/serde_json/)."
+msgstr "підтримка JSON, але дивится [serde_json](https://docs.rs/serde_json/)."
 
 #: src/why-rust/modern.md:45
 msgid ""
@@ -2770,8 +2772,8 @@ msgid ""
 "makes it trivial to download and compile third-party crates. A consequence "
 "of this is that the standard library can be smaller."
 msgstr ""
-"Rust постачається з вбудованим менеджером пакунків у формі Cargo, і це "
-"спрощує завантаження та компіляцію ящиків сторонніх розробників. Наслідком "
+"Rust постачається з вбудованим менеджером пакетів у формі Cargo, і це "
+"спрощує завантаження та компіляцію крейтів сторонніх розробників. Наслідком "
 "цього є те, що стандартна бібліотека може бути меншою."
 
 #: src/why-rust/modern.md:54
@@ -2780,9 +2782,9 @@ msgid ""
 "lib.rs/> help with this by letting you compare health metrics for crates to "
 "find a good and trusted one."
 msgstr ""
-"Виявлення хороших ящиків сторонніх виробників може бути проблемою. Такі "
+"Виявлення хороших крейтів сторонніх виробників може бути проблемою. Такі "
 "сайти, як <https://lib.rs/>, допомагають у цьому, дозволяючи порівнювати "
-"показники здоров’я ящиків, щоб знайти хороший і надійний."
+"показники здоров’я крейтів, щоб знайти хороший і надійний."
 
 #: src/why-rust/modern.md:58
 msgid ""
@@ -2790,7 +2792,7 @@ msgid ""
 "implementation used in major IDEs and text editors."
 msgstr ""
 "[rust-analyzer](https://rust-analyzer.github.io/) — це добре підтримувана "
-"реалізація LSP, яка використовується в основних IDE і текстових редакторах."
+"реалізація LSP, яка використовується в основних IDEs і текстових редакторах."
 
 #: src/basic-syntax.md:3
 msgid "Much of the Rust syntax will be familiar to you from C, C++ or Java:"
@@ -2810,7 +2812,7 @@ msgstr ""
 
 #: src/basic-syntax.md:8
 msgid "Keywords like `if` and `while` work the same."
-msgstr "Такі ключові слова, як «якщо» та «поки» працюють однаково."
+msgstr "Такі ключові слова, як `if` та `while` працюють також само."
 
 #: src/basic-syntax.md:9
 msgid "Variable assignment is done with `=`, comparison is done with `==`."
@@ -2865,7 +2867,7 @@ msgstr "`3.14`, `-10.0e20`, `2_f32`"
 
 #: src/basic-syntax/scalar-types.md:8
 msgid "Strings"
-msgstr "рядки"
+msgstr "Рядки"
 
 #: src/basic-syntax/scalar-types.md:8
 msgid "`&str`"
@@ -2909,7 +2911,7 @@ msgstr "`iN`, `uN` і `fN` мають ширину _N_ біт,"
 
 #: src/basic-syntax/scalar-types.md:15
 msgid "`isize` and `usize` are the width of a pointer,"
-msgstr "`isize` і `usize` – це ширина покажчика,"
+msgstr "`isize` і `usize` – це ширина вказівника,"
 
 #: src/basic-syntax/scalar-types.md:16
 msgid "`char` is 32 bits wide,"
@@ -2929,8 +2931,8 @@ msgid ""
 "`r\"\\n\" == \"\\\\n\"`. You can embed double-quotes by using an equal "
 "amount of `#` on either side of the quotes:"
 msgstr ""
-"Необроблені рядки дозволяють створювати значення `&str` з вимкненими "
-"екранами: `r\"\\n\" == \"\\\\n\"`. Ви можете вставити подвійні лапки, "
+"Необроблені рядки дозволяють створювати значення `&str` з відключеним "
+"екрануванням: `r\"\\n\" == \"\\\\n\"`. Ви можете вставити подвійні лапки, "
 "використовуючи однакову кількість `#` з обох боків лапок:"
 
 #: src/basic-syntax/scalar-types.md:27
@@ -2963,7 +2965,7 @@ msgid ""
 "`1_000` can be written as `1000` (or `10_00`), and `123_i64` can be written "
 "as `123i64`."
 msgstr ""
-"Усі підкреслення в цифрах можна опускати, вони призначені лише для "
+"Усі підкреслення у числах можна опускати, вони призначені лише для "
 "розбірливості. Отже, `1_000` можна записати як `1000` (або `10_00`), а "
 "`123_i64` можна записати як `123i64`."
 
@@ -2993,7 +2995,7 @@ msgstr "`()`, `('x',)`, `('x', 1.2)`, ..."
 
 #: src/basic-syntax/compound-types.md:8
 msgid "Array assignment and access:"
-msgstr "Призначення масиву та доступ:"
+msgstr "Присвоєння масиву та доступ:"
 
 #: src/basic-syntax/compound-types.md:10
 msgid ""
@@ -3032,10 +3034,14 @@ msgid ""
 "its type_, which means that `[u8; 3]` and `[u8; 4]` are considered two "
 "different types."
 msgstr ""
+"Значення типу масиву `[T; N]` містить `N` (константа часу компіляції) "
+"елементів того самого типу `T`. Зверніть увагу, що довжина масиву є "
+"_частиною його типу_, що означає, що `[u8; 3]` і `[u8; 4]` вважаються двома "
+"різними типами."
 
 #: src/basic-syntax/compound-types.md:38
 msgid "We can use literals to assign values to arrays."
-msgstr "Ми можемо використовувати літерали для призначення значень масивам."
+msgstr "Ми можемо використовувати літерали для присвоєння значень масивам."
 
 #: src/basic-syntax/compound-types.md:40
 msgid ""
@@ -3047,7 +3053,7 @@ msgstr ""
 "У головній функції оператор print запитує реалізацію налагодження за "
 "допомогою параметра формату `?`: `{}` дає вихід за замовчуванням, `{:?}` дає "
 "вихід налагодження. Ми також могли використовувати `{a}` і `{a:?}` без "
-"вказівки значення після рядка формату."
+"вказівки значення після рядку формату."
 
 #: src/basic-syntax/compound-types.md:45
 msgid ""
@@ -3074,7 +3080,7 @@ msgid ""
 "Fields of a tuple can be accessed by the period and the index of the value, "
 "e.g. `t.0`, `t.1`."
 msgstr ""
-"Доступ до полів кортежу можна отримати за крапкою та індексом значення, "
+"Доступ до полів кортежу можна отримати після крапки з індексом значення, "
 "наприклад. `t.0`, `t.1`."
 
 #: src/basic-syntax/compound-types.md:55
@@ -3084,17 +3090,17 @@ msgid ""
 "value are expressed as `()`. It is used to indicate, for example, that a "
 "function or expression has no return value, as we'll see in a future slide. "
 msgstr ""
-"Порожній кортеж `()` також відомий як \"тип одиниці\". Це і тип, і єдине "
+"Порожній кортеж `()` також відомий як \"тип агрегату\". Це і тип, і єдине "
 "дійсне значення цього типу, тобто і тип, і його значення виражаються як "
 "`()`. Він використовується, наприклад, щоб вказати, що функція або вираз не "
-"мають значення, що повертається, як ми побачимо на наступному слайді."
+"мають значення що повертається, як ми побачимо на наступному слайді."
 
 #: src/basic-syntax/compound-types.md:59
 msgid ""
 "You can think of it as `void` that can be familiar to you from other  "
 "programming languages."
 msgstr ""
-"Ви можете думати про це як про «пустоту», яка може бути знайома вам з інших "
+"Ви можете думати про це як про `void`, який може бути знайомий вам з інших "
 "мов програмування."
 
 #: src/basic-syntax/references.md:3
@@ -3122,8 +3128,8 @@ msgid ""
 "We must dereference `ref_x` when assigning to it, similar to C and C++ "
 "pointers."
 msgstr ""
-"Ми повинні розіменувати ref_x під час призначення, подібно до покажчиків C і "
-"C++."
+"Ми повинні розіменувати `ref_x` під час присвоєння, подібно до вказівників C "
+"і C++."
 
 #: src/basic-syntax/references.md:17
 msgid ""
@@ -3131,7 +3137,7 @@ msgid ""
 "methods (try `ref_x.count_ones()`)."
 msgstr ""
 "У деяких випадках Rust виконує автоматичне розіменування, зокрема під час "
-"виклику методів (спробуйте ref_x.count_ones())."
+"виклику методів (спробуйте `ref_x.count_ones()`)."
 
 #: src/basic-syntax/references.md:19
 msgid ""
@@ -3185,11 +3191,11 @@ msgstr ""
 
 #: src/basic-syntax/references-dangling.md:19
 msgid "We will talk more about borrowing when we get to ownership."
-msgstr "Про запозичення ми поговоримо більше, коли дійдемо до власності."
+msgstr "Про запозичення ми поговоримо більше, коли дійдемо до володіння."
 
 #: src/basic-syntax/slices.md:3
 msgid "A slice gives you a view into a larger collection:"
-msgstr "Фрагмент дає змогу переглянути більшу колекцію:"
+msgstr "Зріз дає змогу переглянути більшу колекцію:"
 
 #: src/basic-syntax/slices.md:5
 msgid ""
@@ -3219,8 +3225,8 @@ msgid ""
 "We create a slice by borrowing `a` and specifying the starting and ending "
 "indexes in brackets."
 msgstr ""
-"Ми створюємо фрагмент, запозичуючи `a` та вказуючи початковий і кінцевий "
-"індекси в дужках."
+"Ми створюємо зріз, запозичуючи `a` та вказуючи початковий і кінцевий індекси "
+"в дужках."
 
 #: src/basic-syntax/slices.md:23
 msgid ""
@@ -3228,7 +3234,7 @@ msgid ""
 "starting index, meaning that `&a[0..a.len()]` and `&a[..a.len()]` are "
 "identical."
 msgstr ""
-"Якщо фрагмент починається з індексу 0, синтаксис діапазону Rust дозволяє нам "
+"Якщо зріз починається з індексу 0, синтаксис діапазону Rust дозволяє нам "
 "відкинути початковий індекс, тобто `&a[0..a.len()]` і `&a[..a.len()]` "
 "ідентичні."
 
@@ -3237,15 +3243,14 @@ msgid ""
 "The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are "
 "identical."
 msgstr ""
-"Те саме стосується останнього індексу, тому `&a[2..a.len()]` і `&a[2..]` "
+"Теж саме стосується останнього індексу, тому `&a[2..a.len()]` і `&a[2..]` "
 "ідентичні."
 
 #: src/basic-syntax/slices.md:27
 msgid ""
 "To easily create a slice of the full array, we can therefore use `&a[..]`."
 msgstr ""
-"Щоб легко створити фрагмент повного масиву, ми можемо використовувати "
-"`&a[..]`."
+"Щоб легко створити зріз повного масиву, ми можемо використовувати `&a[..]`."
 
 #: src/basic-syntax/slices.md:29
 msgid ""
@@ -3253,7 +3258,7 @@ msgid ""
 "(`&[i32]`) no longer mentions the array length. This allows us to perform "
 "computation on slices of different sizes."
 msgstr ""
-"`s` є посиланням на фрагмент `i32`s. Зверніть увагу, що тип `s` (`&[i32]`) "
+"`s` є посиланням на зріз `i32`s. Зверніть увагу, що тип `s` (`&[i32]`) "
 "більше не згадує довжину масиву. Це дозволяє нам виконувати обчислення на "
 "зрізах різного розміру."
 
@@ -3262,9 +3267,9 @@ msgid ""
 "Slices always borrow from another object. In this example, `a` has to remain "
 "'alive' (in scope) for at least as long as our slice. "
 msgstr ""
-"Зрізи завжди запозичуються з іншого об'єкта. У цьому прикладі \"a\" має "
-"залишатися \"живим\" (в області видимості) принаймні стільки ж, скільки наш "
-"фрагмент."
+"Зрізи завжди запозичуються з іншого об'єкта. У цьому прикладі `a` має "
+"залишатися 'живим' (в області застосування) принаймні стільки ж, скільки наш "
+"зріз."
 
 #: src/basic-syntax/slices.md:33
 msgid ""
@@ -3278,9 +3283,9 @@ msgstr ""
 "Питання про модифікацію `a[3]` може викликати цікаву дискусію, але відповідь "
 "полягає в тому, що з міркувань безпеки пам’яті ви не можете зробити це через "
 "`a` на цьому етапі виконання, але ви можете читати дані з обох `a ` і `s` "
-"безпечно. Він працює до того, як ви створили фрагмент, і знову після "
-"`println`, коли фрагмент більше не використовується. Докладніше буде описано "
-"в розділі перевірки запозичень."
+"безпечно. Це спрацьовує до того, як ви створили зріз, і знову після "
+"`println`, коли зріз більше не використовується. Докладніше буде описано у "
+"розділі перевірки запозичень."
 
 #: src/basic-syntax/string-slices.md:1
 msgid "`String` vs `str`"
@@ -3314,7 +3319,7 @@ msgstr "Термінологія Rust:"
 
 #: src/basic-syntax/string-slices.md:22
 msgid "`&str` an immutable reference to a string slice."
-msgstr "`&str` незмінне посилання на фрагмент рядка."
+msgstr "`&str` незмінне посилання на зріз рядка."
 
 #: src/basic-syntax/string-slices.md:23
 msgid "`String` a mutable string buffer."
@@ -3326,8 +3331,8 @@ msgid ""
 "encoded string data  stored in a block of memory. String literals "
 "(`”Hello”`), are stored in the program’s binary."
 msgstr ""
-"`&str` представляє фрагмент рядка, який є незмінним посиланням на дані рядка "
-"в кодуванні UTF-8, що зберігаються в блоці пам’яті. Рядкові літерали "
+"`&str` представляє зріз рядка, який є незмінним посиланням на дані рядка в "
+"кодуванні UTF-8, що зберігаються в блоці пам’яті. Рядкові літерали "
 "(`”Hello”`) зберігаються у бінарному файлі програми."
 
 #: src/basic-syntax/string-slices.md:30
@@ -3335,8 +3340,8 @@ msgid ""
 "Rust’s `String` type is a wrapper around a vector of bytes. As with a "
 "`Vec<T>`, it is owned."
 msgstr ""
-"Тип `String` Rust — це оболонка навколо вектора байтів. Як і у випадку з "
-"`Vec<T>`, він належить."
+"Тип `String` в Rust — це оболонка навколо вектора байтів. Як і у випадку з "
+"`Vec<T>`, він є власністю."
 
 #: src/basic-syntax/string-slices.md:32
 msgid ""
@@ -3344,6 +3349,9 @@ msgid ""
 "literal; `String::new()`  creates a new empty string, to which string data "
 "can be added using the `push()` and `push_str()` methods."
 msgstr ""
+"Як і багато інших типів, `String::from()` створює рядок із рядкового "
+"літералу; `String::new()` створює новий порожній рядок, до якого дані рядка "
+"можна додати за допомогою методів `push()` і `push_str()`."
 
 #: src/basic-syntax/string-slices.md:35
 msgid ""
@@ -3359,7 +3367,8 @@ msgid ""
 "You can borrow `&str` slices from `String` via `&` and optionally range "
 "selection."
 msgstr ""
-"Ви можете запозичити фрагменти `&str` з `String` через `&` і вибір діапазону."
+"Ви можете запозичити зріз `&str` з `String` через `&` і, за бажанням, вибіру "
+"діапазону."
 
 #: src/basic-syntax/string-slices.md:40
 msgid ""
@@ -3372,7 +3381,7 @@ msgstr ""
 "той, який завжди вказує на дійсний рядок у пам’яті. Rust `String` — це "
 "приблизний еквівалент `std::string` з C++ (головна відмінність: він може "
 "містити лише байти в кодуванні UTF-8 і ніколи не використовуватиме "
-"оптимізацію за малими рядками)."
+"оптимізацію малих рядків)."
 
 #: src/basic-syntax/functions.md:3
 msgid ""
@@ -3426,22 +3435,24 @@ msgid ""
 "Declaration parameters are followed by a type (the reverse of some "
 "programming languages), then a return type."
 msgstr ""
-"За параметрами оголошення слідує тип (зворотній зв’язок з деякими мовами "
-"програмування), а потім тип повернення."
+"Параметри оголошення супроводжуються типом (у зворотному порядку порівняно з "
+"деякими мовами програмування), а потім тип повернення."
 
 #: src/basic-syntax/functions.md:37
 msgid ""
 "The last expression in a function body (or any block) becomes the return "
 "value. Simply omit the `;` at the end of the expression."
 msgstr ""
+"Останній вираз у тілі функції (або будь-якому блоці) стає значенням, що "
+"повертається. Просто опустіть `;` в кінці виразу."
 
 #: src/basic-syntax/functions.md:38
 msgid ""
 "Some functions have no return value, and return the 'unit type', `()`. The "
 "compiler will infer this if the `-> ()` return type is omitted."
 msgstr ""
-"Деякі функції не мають значення, що повертається, і повертають «тип одиниці "
-"вимірювання», `()`. Компілятор визначить це, якщо тип повернення `-> ()` "
+"Деякі функції не мають значення, що повертається, і повертають 'тип "
+"агрегату', `()`. Компілятор визначить це, якщо тип повернення `-> ()` "
 "пропущено."
 
 #: src/basic-syntax/functions.md:39
@@ -3483,10 +3494,10 @@ msgid ""
 "(https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) tool. It is "
 "idiomatic to document all public items in an API using this pattern."
 msgstr ""
-"Вміст розглядається як Markdown. Усі опубліковані ящики бібліотеки Rust "
+"Вміст розглядається як Markdown. Усі опубліковані крейти бібліотеки Rust "
 "автоматично документуються на [`docs.rs`](https://docs.rs) за допомогою "
-"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc) .html). "
-"Ідіоматично документувати всі публічні елементи в API за допомогою цього "
+"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html). Це "
+"ідіоматично документувати всі публічні елементи в API за допомогою цього "
 "шаблону."
 
 #: src/basic-syntax/rustdoc.md:24
@@ -3494,8 +3505,8 @@ msgid ""
 "Show students the generated docs for the `rand` crate at [`docs.rs/rand`]"
 "(https://docs.rs/rand)."
 msgstr ""
-"Покажіть студентам згенеровані документи для ящика `rand` на [`docs.rs/rand`]"
-"(https://docs.rs/rand)."
+"Покажіть студентам згенеровані документи для крейта `rand` на [`docs.rs/"
+"rand`](https://docs.rs/rand)."
 
 #: src/basic-syntax/rustdoc.md:27
 msgid ""
@@ -3510,7 +3521,7 @@ msgid ""
 "Inner doc comments are discussed later (in the page on modules) and need not "
 "be addressed here."
 msgstr ""
-"Коментарі до внутрішнього документа обговорюються пізніше (на сторінці "
+"Коментарі до внутрішніх документів обговорюються пізніше (на сторінці "
 "модулів), і їх тут не потрібно розглядати."
 
 #: src/basic-syntax/rustdoc.md:33
@@ -3519,7 +3530,7 @@ msgid ""
 "`cargo test`. We will discuss these tests in the [Testing section](../"
 "testing/doc-tests.html)."
 msgstr ""
-"Коментарі Rustdoc можуть містити фрагменти коду, які ми можемо запускати та "
+"Коментарі rustdoc можуть містити фрагменти коду, які ми можемо запускати та "
 "тестувати за допомогою `cargo test`. Ми обговоримо ці тести в [розділі "
 "тестування](../testing/doc-tests.html)."
 
@@ -3528,8 +3539,8 @@ msgid ""
 "Methods are functions associated with a type. The `self` argument of a "
 "method is an instance of the type it is associated with:"
 msgstr ""
-"Методи — це функції, пов’язані з типом. Аргумент `self` методу є екземпляром "
-"типу, з яким він пов’язаний:"
+"Методи — це функції, які пов’язані з типом. Аргумент `self` методу є "
+"екземпляром типу, з яким він пов’язаний:"
 
 #: src/basic-syntax/methods.md:6
 msgid ""
@@ -3563,13 +3574,14 @@ msgid ""
 "We will look much more at methods in today's exercise and in tomorrow's "
 "class."
 msgstr ""
-"Ми розглянемо методи набагато більше в сьогоднішній вправі та на "
+"Ми розглянемо методи набагато детальніше в сьогоднішній вправі та на "
 "завтрашньому уроці."
 
 #: src/basic-syntax/methods.md:34
 msgid "Add a static method called `Rectangle::new` and call this from `main`:"
 msgstr ""
-"Додайте статичний метод під назвою `Rectangle::new` і викличте це з `main`:"
+"Додайте статичний метод під назвою `Rectangle::new` і викличте його із "
+"`main`:"
 
 #: src/basic-syntax/methods.md:36
 msgid ""
@@ -3587,7 +3599,7 @@ msgid ""
 "constructor, `Rectangle { width, height }`, could be called directly. See "
 "the [Rustnomicon](https://doc.rust-lang.org/nomicon/constructors.html)."
 msgstr ""
-"Хоча _технічно_, Rust не має спеціальних конструкторів, для ініціалізації "
+"Хоча _технічно_, Rust не має нестандартних конструкторів, для ініціалізації "
 "структур зазвичай використовуються статичні методи (але це не обов’язково). "
 "Фактичний конструктор, `Rectangle { width, height }`, можна викликати "
 "безпосередньо. Перегляньте [Rustnomicon](https://doc.rust-lang.org/nomicon/"
@@ -3599,7 +3611,7 @@ msgid ""
 "static methods can take arbitrary parameters."
 msgstr ""
 "Додайте конструктор `Rectangle::square(width: u32)`, щоб проілюструвати, що "
-"такі статичні методи можуть приймати довільні параметри."
+"такі статичні методи можуть приймати будь-яки параметри."
 
 #: src/basic-syntax/functions-interlude.md:1
 msgid "Function Overloading"
@@ -3635,7 +3647,7 @@ msgstr "Макроси іноді використовуються як альт
 
 #: src/basic-syntax/functions-interlude.md:12
 msgid "However, function parameters can be generic:"
-msgstr "Однак параметри функції можуть бути загальними:"
+msgstr "Однак параметри функції можуть бути узагальнені:"
 
 #: src/basic-syntax/functions-interlude.md:14
 msgid ""
@@ -3657,9 +3669,9 @@ msgid ""
 "limited polymorphism on argument types. We will see more details in a later "
 "section."
 msgstr ""
-"При використанні дженериків стандартна бібліотека `Into<T>` може забезпечити "
-"певний обмежений поліморфізм типів аргументів. Ми побачимо більше деталей у "
-"наступному розділі."
+"При використанні узагальнених типів, `Into<T>` зі стандартної бібліотеки  "
+"може забезпечити певний обмежений поліморфізм типів аргументів. Ми побачимо "
+"більше деталей у наступному розділі."
 
 #: src/exercises/day-1/morning.md:1
 msgid "Day 1: Morning Exercises"
@@ -3675,7 +3687,7 @@ msgstr "Неявні перетворення між типами."
 
 #: src/exercises/day-1/morning.md:7
 msgid "Arrays and `for` loops."
-msgstr "Масиви та цикли for."
+msgstr "Масиви та цикли `for`."
 
 #: src/exercises/day-1/morning.md:11
 msgid "A few things to consider while solving the exercises:"
@@ -3694,7 +3706,7 @@ msgstr ""
 
 #: src/exercises/day-1/morning.md:17
 msgid "Alternatively, use the Rust Playground."
-msgstr "Крім того, скористайтеся ігровим майданчиком Rust."
+msgstr "Як варіант, скористайтеся Rust Playground."
 
 #: src/exercises/day-1/morning.md:19
 msgid ""
@@ -3751,10 +3763,10 @@ msgid ""
 msgstr ""
 "Усі цілі типи Rust реалізують [`From<T>`](https://doc.rust-lang.org/std/"
 "convert/trait.From.html) і [`Into<T>`](https: //doc.rust-lang.org/std/"
-"convert/trait.Into.html), щоб ми могли конвертувати між ними. Характеристика "
-"`From<T>` має єдиний метод `from()`, а ознака `Into<T>` має один метод "
-"`into()`. Реалізація цих ознак є тим, як тип виражає, що його можна "
-"перетворити на інший тип."
+"convert/trait.Into.html) трейти, щоб ми могли конвертувати між ними. Трейт "
+"`From<T>` має єдиний метод `from()`, а трейт `Into<T>` має один метод "
+"`into()`. Реалізація цих трейтів є тим засобом, яким тип виражає, що його "
+"можна перетворити на інший тип."
 
 #: src/exercises/day-1/implicit-conversions.md:25
 msgid ""
@@ -3775,9 +3787,9 @@ msgid ""
 "it is sufficient to only implement `From` to get a respective `Into` "
 "implementation automatically."
 msgstr ""
-"Те саме стосується ваших власних реалізацій `From` для ваших власних типів, "
-"тому достатньо реалізувати лише `From`, щоб автоматично отримати відповідну "
-"реалізацію `Into`."
+"Те саме стосується і ваших власних реалізацій `From` для ваших власних "
+"типів, тому достатньо реалізувати лише `From`, щоб автоматично отримати "
+"відповідну реалізацію `Into`."
 
 #: src/exercises/day-1/implicit-conversions.md:33
 msgid "Execute the above program and look at the compiler error."
@@ -3786,7 +3798,8 @@ msgstr "Виконайте наведену вище програму та по
 #: src/exercises/day-1/implicit-conversions.md:35
 msgid "Update the code above to use `into()` to do the conversion."
 msgstr ""
-"Оновіть код вище, щоб використовувати `in()` для виконання перетворення."
+"Оновіть код вище таким чином, щоб використовувати `into()` для виконання "
+"перетворення."
 
 #: src/exercises/day-1/implicit-conversions.md:37
 msgid ""
@@ -3798,18 +3811,18 @@ msgid ""
 msgstr ""
 "Змініть типи `x` і `y` на інші речі (наприклад, `f32`, `bool`, `i128`), щоб "
 "побачити, які типи можна перетворити на інші типи. Спробуйте перетворити "
-"малі типи на великі типи і навпаки. Перевірте [стандартну бібліотечну "
-"документацію](https://doc.rust-lang.org/std/convert/trait.From.html), щоб "
-"перевірити, чи реалізовано `From<T>` для пар, які ви перевіряєте."
+"малі типи на великі типи і навпаки. Подивіться [документацію стандартної "
+"бібліотеки](https://doc.rust-lang.org/std/convert/trait.From.html), щоб "
+"перевірити, чи реалізовано `From<T>` для пар типів, які ви перевіряєте."
 
 #: src/exercises/day-1/for-loops.md:1
 #: src/exercises/day-1/solutions-morning.md:3
 msgid "Arrays and `for` Loops"
-msgstr "Масиви та цикли for"
+msgstr "Масиви та цикли `for`"
 
 #: src/exercises/day-1/for-loops.md:3
 msgid "We saw that an array can be declared like this:"
-msgstr "Ми побачили, що масив можна оголосити так:"
+msgstr "Ми побачили, що масив можна декларувати так:"
 
 #: src/exercises/day-1/for-loops.md:5
 msgid ""
@@ -3823,8 +3836,8 @@ msgid ""
 "You can print such an array by asking for its debug representation with `{:?}"
 "`:"
 msgstr ""
-"Ви можете надрукувати такий масив, запитавши його представлення налагодження "
-"за допомогою `{:?}`:"
+"Ви можете надрукувати такий масив, запитавши його налагоджувальне "
+"представлення за допомогою `{:?}`:"
 
 #: src/exercises/day-1/for-loops.md:11
 msgid ""
@@ -3892,7 +3905,7 @@ msgid ""
 "Copy the code below to <https://play.rust-lang.org/> and implement the "
 "functions:"
 msgstr ""
-"Скопіюйте наведений нижче код на <https://play.rust-lang.org/> і застосуйте "
+"Скопіюйте наведений нижче код до <https://play.rust-lang.org/> та застосуйте "
 "функції:"
 
 #: src/exercises/day-1/for-loops.md:52
@@ -3936,9 +3949,9 @@ msgid ""
 "argument and return types? Something like `&[&[i32]]` for a two-dimensional "
 "slice-of-slices. Why or why not?"
 msgstr ""
-"Чи можете ви використати фрагменти `&[i32]` замість жорстко закодованих "
-"матриць 3 × 3 для ваших аргументів і типів повернення? Щось на зразок "
-"`&[&[i32]]` для двовимірного фрагмента фрагментів. Чому або чому ні?"
+"Чи можете ви використати зрізи `&[i32]` замість жорстко закодованих матриць "
+"3 × 3 для ваших аргументів і типів повернення? Щось на зразок `&[&[i32]]` "
+"для двовимірного зрізу зрізів. Чому так або чому ні?"
 
 #: src/exercises/day-1/for-loops.md:87
 msgid ""
@@ -3946,7 +3959,7 @@ msgid ""
 "implementation."
 msgstr ""
 "Перегляньте [`ndarray` ящик](https://docs.rs/ndarray/), щоб дізнатися про "
-"якість виробництва."
+"якісну реалізацію, ака готова до використання."
 
 #: src/exercises/day-1/for-loops.md:92
 msgid ""