From cc1df39ba712330d061146ee51054461db5b3acd Mon Sep 17 00:00:00 2001 From: Andriy Redko Date: Mon, 2 Dec 2024 19:58:50 -0500 Subject: [PATCH 1/3] uk: Refresh translations Signed-off-by: Andriy Redko --- po/uk.po | 7453 +++++++++++++++++++++++++++++------------------------- 1 file changed, 3979 insertions(+), 3474 deletions(-) diff --git a/po/uk.po b/po/uk.po index 17b8b210ac2..241dd8f75f9 100644 --- a/po/uk.po +++ b/po/uk.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Comprehensive Rust 🦀\n" -"POT-Creation-Date: 2024-09-21T12:49:47-04:00\n" +"POT-Creation-Date: 2024-12-02T18:49:46-05:00\n" "PO-Revision-Date: 2023-10-18 20:05+0300\n" "Last-Translator: Oleksandr Leoshko \n" "Language-Team: \n" @@ -12,1277 +12,1390 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.4\n" -#: src/SUMMARY.md src/index.md +#: src/SUMMARY.md:3 src/index.md:1 msgid "Welcome to Comprehensive Rust 🦀" msgstr "Ласкаво просимо в Comprehensive Rust 🦀" -#: src/SUMMARY.md src/running-the-course.md +#: src/SUMMARY.md:5 src/running-the-course.md:1 msgid "Running the Course" msgstr "Проведення курсу" -#: src/SUMMARY.md src/running-the-course/course-structure.md:1 +#: src/SUMMARY.md:6 src/running-the-course/course-structure.md:1 msgid "Course Structure" msgstr "Структура курсу" -#: src/SUMMARY.md src/running-the-course/keyboard-shortcuts.md:1 +#: src/SUMMARY.md:7 src/running-the-course/keyboard-shortcuts.md:1 msgid "Keyboard Shortcuts" msgstr "Гарячі клавіші" -#: src/SUMMARY.md src/running-the-course/translations.md:1 +#: src/SUMMARY.md:8 src/running-the-course/translations.md:1 msgid "Translations" msgstr "Переклади" -#: src/SUMMARY.md src/cargo.md +#: src/SUMMARY.md:9 src/cargo.md:1 msgid "Using Cargo" msgstr "Використання Cargo" -#: src/SUMMARY.md +#: src/SUMMARY.md:10 msgid "Rust Ecosystem" msgstr "Екосистема Rust" -#: src/SUMMARY.md +#: src/SUMMARY.md:11 msgid "Code Samples" msgstr "Приклади коду" -#: src/SUMMARY.md +#: src/SUMMARY.md:12 msgid "Running Cargo Locally" msgstr "Локальний запуск Cargo" -#: src/SUMMARY.md +#: src/SUMMARY.md:16 msgid "Day 1: Morning" msgstr "День 1: Ранок" -#: src/SUMMARY.md src/concurrency/welcome-async.md +#: src/SUMMARY.md:18 src/SUMMARY.md:47 src/SUMMARY.md:76 src/SUMMARY.md:96 +#: src/SUMMARY.md:131 src/SUMMARY.md:151 src/SUMMARY.md:170 src/SUMMARY.md:193 +#: src/SUMMARY.md:218 src/SUMMARY.md:266 src/SUMMARY.md:308 src/SUMMARY.md:359 +#: src/SUMMARY.md:383 src/running-the-course/course-structure.md:15 +#: src/running-the-course/course-structure.md:34 +#: src/running-the-course/course-structure.md:52 +#: src/running-the-course/course-structure.md:69 src/welcome-day-1.md:18 +#: src/welcome-day-2.md:18 src/welcome-day-3.md:15 src/welcome-day-4.md:17 +#: src/concurrency/welcome-async.md:1 msgid "Welcome" msgstr "Ласкаво просимо" -#: src/SUMMARY.md src/hello-world.md src/types-and-values/hello-world.md:5 +#: src/SUMMARY.md:19 src/SUMMARY.md:24 +#: src/running-the-course/course-structure.md:16 src/welcome-day-1.md:19 +#: src/hello-world.md:1 src/types-and-values.md:7 +#: src/types-and-values/hello-world.md:1 msgid "Hello, World" msgstr "Hello World!" -#: src/SUMMARY.md src/hello-world/what-is-rust.md:5 +#: src/SUMMARY.md:20 src/hello-world.md:7 src/hello-world/what-is-rust.md:1 msgid "What is Rust?" msgstr "Що таке Rust?" -#: src/SUMMARY.md src/hello-world/benefits.md:5 +#: src/SUMMARY.md:21 src/hello-world.md:8 src/hello-world/benefits.md:1 msgid "Benefits of Rust" msgstr "Переваги Rust" -#: src/SUMMARY.md src/hello-world/playground.md:5 +#: src/SUMMARY.md:22 src/hello-world.md:9 src/hello-world/playground.md:1 msgid "Playground" msgstr "Ігровий майданчик" -#: src/SUMMARY.md src/types-and-values.md +#: src/SUMMARY.md:23 src/running-the-course/course-structure.md:17 +#: src/welcome-day-1.md:20 src/types-and-values.md:1 msgid "Types and Values" msgstr "Типи та значення" -#: src/SUMMARY.md src/types-and-values/variables.md:5 +#: src/SUMMARY.md:25 src/types-and-values.md:8 +#: src/types-and-values/variables.md:1 msgid "Variables" msgstr "Змінні" -#: src/SUMMARY.md src/types-and-values/values.md:5 +#: src/SUMMARY.md:26 src/types-and-values.md:9 src/types-and-values/values.md:1 msgid "Values" msgstr "Значення" -#: src/SUMMARY.md src/types-and-values/arithmetic.md:5 +#: src/SUMMARY.md:27 src/types-and-values.md:10 +#: src/types-and-values/arithmetic.md:1 msgid "Arithmetic" msgstr "Арифметика" -#: src/SUMMARY.md src/types-and-values/inference.md:5 +#: src/SUMMARY.md:28 src/types-and-values.md:11 +#: src/types-and-values/inference.md:1 msgid "Type Inference" msgstr "Виведення типів" -#: src/SUMMARY.md src/types-and-values/exercise.md:5 +#: src/SUMMARY.md:29 src/types-and-values.md:12 +#: src/types-and-values/exercise.md:1 msgid "Exercise: Fibonacci" msgstr "Вправа: Фібоначчі" -#: src/SUMMARY.md src/types-and-values/solution.md:1 -#: src/control-flow-basics/solution.md:1 src/tuples-and-arrays/solution.md:1 -#: src/references/solution.md:1 src/user-defined-types/solution.md:1 -#: src/pattern-matching/solution.md:1 src/methods-and-traits/solution.md:1 -#: src/generics/solution.md:1 src/std-types/solution.md:1 -#: src/std-traits/solution.md:1 src/memory-management/solution.md:1 -#: src/smart-pointers/solution.md:1 src/borrowing/solution.md:1 -#: src/lifetimes/solution.md:1 src/iterators/solution.md:1 -#: src/modules/solution.md:1 src/testing/solution.md:1 -#: src/error-handling/solution.md:1 src/unsafe-rust/solution.md:1 +#: src/SUMMARY.md:30 src/SUMMARY.md:43 src/SUMMARY.md:54 src/SUMMARY.md:61 +#: src/SUMMARY.md:70 src/SUMMARY.md:83 src/SUMMARY.md:92 src/SUMMARY.md:105 +#: src/SUMMARY.md:115 src/SUMMARY.md:125 src/SUMMARY.md:141 src/SUMMARY.md:147 +#: src/SUMMARY.md:158 src/SUMMARY.md:164 src/SUMMARY.md:176 src/SUMMARY.md:183 +#: src/SUMMARY.md:189 src/SUMMARY.md:203 src/SUMMARY.md:212 +#: src/types-and-values/solution.md:1 src/control-flow-basics/solution.md:1 +#: src/tuples-and-arrays/solution.md:1 src/references/solution.md:1 +#: src/user-defined-types/solution.md:1 src/pattern-matching/solution.md:1 +#: src/methods-and-traits/solution.md:1 src/generics/solution.md:1 +#: src/std-types/solution.md:1 src/std-traits/solution.md:1 +#: src/memory-management/solution.md:1 src/smart-pointers/solution.md:1 +#: src/borrowing/solution.md:1 src/lifetimes/solution.md:1 +#: src/iterators/solution.md:1 src/modules/solution.md:1 +#: src/testing/solution.md:1 src/error-handling/solution.md:1 +#: src/unsafe-rust/solution.md:1 msgid "Solution" msgstr "Рішення" -#: src/SUMMARY.md src/control-flow-basics.md +#: src/SUMMARY.md:31 src/running-the-course/course-structure.md:18 +#: src/welcome-day-1.md:21 src/control-flow-basics.md:1 msgid "Control Flow Basics" msgstr "Основи потоку керування" -#: src/SUMMARY.md +#: src/SUMMARY.md:32 msgid "`if` Expressions" msgstr "Вирази `if`" -#: src/SUMMARY.md src/control-flow-basics/loops.md:5 +#: src/SUMMARY.md:33 src/control-flow-basics.md:8 +#: src/control-flow-basics/loops.md:1 msgid "Loops" msgstr "Цикли" -#: src/SUMMARY.md src/control-flow-basics/loops/for.md:1 +#: src/SUMMARY.md:34 src/control-flow-basics/loops/for.md:1 msgid "`for`" msgstr "`for`" -#: src/SUMMARY.md src/control-flow-basics/loops/loop.md:1 +#: src/SUMMARY.md:35 src/control-flow-basics/loops/loop.md:1 msgid "`loop`" msgstr "`loop`" -#: src/SUMMARY.md src/control-flow-basics/break-continue.md:5 +#: src/SUMMARY.md:36 src/control-flow-basics/break-continue.md:1 msgid "`break` and `continue`" msgstr "`break` та `continue`" -#: src/SUMMARY.md src/control-flow-basics/break-continue/labels.md:1 +#: src/SUMMARY.md:37 src/control-flow-basics/break-continue/labels.md:1 msgid "Labels" msgstr "Мітки" -#: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes.md:5 +#: src/SUMMARY.md:38 src/control-flow-basics.md:10 +#: src/control-flow-basics/blocks-and-scopes.md:1 msgid "Blocks and Scopes" msgstr "Блоки та області застосування" -#: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes/scopes.md:1 +#: src/SUMMARY.md:39 src/control-flow-basics/blocks-and-scopes/scopes.md:1 msgid "Scopes and Shadowing" msgstr "Області видимості та затінення" -#: src/SUMMARY.md src/control-flow-basics/functions.md:5 +#: src/SUMMARY.md:40 src/control-flow-basics.md:11 +#: src/control-flow-basics/functions.md:1 msgid "Functions" msgstr "Функції" -#: src/SUMMARY.md src/control-flow-basics/macros.md:5 +#: src/SUMMARY.md:41 src/control-flow-basics.md:12 +#: src/control-flow-basics/macros.md:1 msgid "Macros" msgstr "Макроси" -#: src/SUMMARY.md src/control-flow-basics/exercise.md:5 +#: src/SUMMARY.md:42 src/control-flow-basics.md:13 +#: src/control-flow-basics/exercise.md:1 msgid "Exercise: Collatz Sequence" msgstr "Вправа: Послідовність Коллатца" -#: src/SUMMARY.md +#: src/SUMMARY.md:45 msgid "Day 1: Afternoon" msgstr "День 1: Полудень" -#: src/SUMMARY.md src/tuples-and-arrays.md +#: src/SUMMARY.md:48 src/running-the-course/course-structure.md:25 +#: src/welcome-day-1-afternoon.md:7 src/tuples-and-arrays.md:1 msgid "Tuples and Arrays" msgstr "Кортежі та масиви" -#: src/SUMMARY.md src/tuples-and-arrays/arrays.md:5 +#: src/SUMMARY.md:49 src/tuples-and-arrays.md:7 +#: src/tuples-and-arrays/arrays.md:1 msgid "Arrays" msgstr "Масиви" -#: src/SUMMARY.md src/tuples-and-arrays/tuples.md:5 +#: src/SUMMARY.md:50 src/tuples-and-arrays.md:8 +#: src/tuples-and-arrays/tuples.md:1 msgid "Tuples" msgstr "Кортежі" -#: src/SUMMARY.md src/tuples-and-arrays/iteration.md:5 +#: src/SUMMARY.md:51 src/tuples-and-arrays.md:9 +#: src/tuples-and-arrays/iteration.md:1 msgid "Array Iteration" msgstr "Ітерація масиву" -#: src/SUMMARY.md src/tuples-and-arrays/destructuring.md:5 +#: src/SUMMARY.md:52 src/tuples-and-arrays.md:10 +#: src/tuples-and-arrays/destructuring.md:1 msgid "Patterns and Destructuring" msgstr "Патерни та деструктуризація" -#: src/SUMMARY.md src/tuples-and-arrays/exercise.md:5 +#: src/SUMMARY.md:53 src/tuples-and-arrays.md:11 +#: src/tuples-and-arrays/exercise.md:1 msgid "Exercise: Nested Arrays" msgstr "Вправа: Вкладені масиви" -#: src/SUMMARY.md src/references.md +#: src/SUMMARY.md:55 src/running-the-course/course-structure.md:26 +#: src/welcome-day-1-afternoon.md:8 src/references.md:1 msgid "References" msgstr "Посилання" -#: src/SUMMARY.md src/references/shared.md:5 +#: src/SUMMARY.md:56 src/references.md:7 src/references/shared.md:1 msgid "Shared References" msgstr "Спільні посилання" -#: src/SUMMARY.md src/references/exclusive.md:5 +#: src/SUMMARY.md:57 src/references.md:8 src/references/exclusive.md:1 msgid "Exclusive References" msgstr "Ексклюзивні посилання" -#: src/SUMMARY.md src/references/slices.md:5 +#: src/SUMMARY.md:58 src/references.md:9 src/references/slices.md:1 msgid "Slices" msgstr "Зрізи" -#: src/SUMMARY.md src/references/strings.md:9 +#: src/SUMMARY.md:59 src/references.md:10 src/references/strings.md:5 msgid "Strings" msgstr "Рядки" -#: src/SUMMARY.md src/references/exercise.md:5 +#: src/SUMMARY.md:60 src/references.md:11 src/references/exercise.md:1 msgid "Exercise: Geometry" msgstr "Вправа: Геометрія" -#: src/SUMMARY.md src/user-defined-types.md +#: src/SUMMARY.md:62 src/running-the-course/course-structure.md:27 +#: src/welcome-day-1-afternoon.md:9 src/user-defined-types.md:1 msgid "User-Defined Types" msgstr "Типи, які визначаються користувачем" -#: src/SUMMARY.md src/user-defined-types/named-structs.md:5 +#: src/SUMMARY.md:63 src/user-defined-types.md:7 +#: src/user-defined-types/named-structs.md:1 msgid "Named Structs" msgstr "Іменовані структури" -#: src/SUMMARY.md src/user-defined-types/tuple-structs.md:9 +#: src/SUMMARY.md:64 src/user-defined-types.md:8 +#: src/user-defined-types/tuple-structs.md:5 msgid "Tuple Structs" msgstr "Кортежні структури" -#: src/SUMMARY.md src/user-defined-types/enums.md:5 -#: src/pattern-matching/destructuring-enums.md:5 +#: src/SUMMARY.md:65 src/user-defined-types.md:9 +#: src/user-defined-types/enums.md:1 +#: src/pattern-matching/destructuring-enums.md:1 msgid "Enums" msgstr "Перелічувані типи" -#: src/SUMMARY.md +#: src/SUMMARY.md:66 msgid "Const" msgstr "Константи" -#: src/SUMMARY.md +#: src/SUMMARY.md:67 src/user-defined-types.md:10 msgid "Static" msgstr "Статика" -#: src/SUMMARY.md src/user-defined-types/aliases.md:5 +#: src/SUMMARY.md:68 src/user-defined-types.md:11 +#: src/user-defined-types/aliases.md:1 msgid "Type Aliases" msgstr "Псевдоніми типу" -#: src/SUMMARY.md src/user-defined-types/exercise.md:5 +#: src/SUMMARY.md:69 src/user-defined-types.md:12 +#: src/user-defined-types/exercise.md:1 msgid "Exercise: Elevator Events" msgstr "Вправа: події в ліфті" -#: src/SUMMARY.md +#: src/SUMMARY.md:74 msgid "Day 2: Morning" msgstr "День 2: Ранок" -#: src/SUMMARY.md src/pattern-matching.md +#: src/SUMMARY.md:77 src/running-the-course/course-structure.md:35 +#: src/welcome-day-2.md:19 src/pattern-matching.md:1 msgid "Pattern Matching" msgstr "Зіставлення зразків" -#: src/SUMMARY.md src/pattern-matching/match.md:5 +#: src/SUMMARY.md:78 src/pattern-matching.md:7 src/pattern-matching/match.md:1 msgid "Matching Values" msgstr "Співставлення значень" -#: src/SUMMARY.md +#: src/SUMMARY.md:79 src/pattern-matching.md:8 msgid "Destructuring Structs" msgstr "Деструктурування структур" -#: src/SUMMARY.md +#: src/SUMMARY.md:80 src/pattern-matching.md:9 msgid "Destructuring Enums" msgstr "Деструктурування переліків" -#: src/SUMMARY.md src/pattern-matching/let-control-flow.md:5 +#: src/SUMMARY.md:81 src/pattern-matching.md:10 +#: src/pattern-matching/let-control-flow.md:1 msgid "Let Control Flow" msgstr "Потік контролю Let" -#: src/SUMMARY.md src/pattern-matching/exercise.md:5 +#: src/SUMMARY.md:82 src/pattern-matching.md:11 +#: src/pattern-matching/exercise.md:1 msgid "Exercise: Expression Evaluation" msgstr "Вправа: обчислення виразу" -#: src/SUMMARY.md src/methods-and-traits.md +#: src/SUMMARY.md:84 src/running-the-course/course-structure.md:36 +#: src/welcome-day-2.md:20 src/methods-and-traits.md:1 msgid "Methods and Traits" msgstr "Методи та Трейти" -#: src/SUMMARY.md src/methods-and-traits/methods.md:5 +#: src/SUMMARY.md:85 src/methods-and-traits.md:7 +#: src/methods-and-traits/methods.md:1 msgid "Methods" msgstr "Методи" -#: src/SUMMARY.md src/methods-and-traits/traits.md:5 +#: src/SUMMARY.md:86 src/methods-and-traits.md:8 +#: src/methods-and-traits/traits.md:1 msgid "Traits" msgstr "Трейти" -#: src/SUMMARY.md src/methods-and-traits/traits/implementing.md:1 +#: src/SUMMARY.md:87 src/methods-and-traits/traits/implementing.md:1 msgid "Implementing Traits" msgstr "Реалізація трейтів" -#: src/SUMMARY.md src/methods-and-traits/traits/supertraits.md:1 +#: src/SUMMARY.md:88 src/methods-and-traits/traits/supertraits.md:1 msgid "Supertraits" msgstr "Супертрейти" -#: src/SUMMARY.md src/methods-and-traits/traits/associated-types.md:1 +#: src/SUMMARY.md:89 src/methods-and-traits/traits/associated-types.md:1 msgid "Associated Types" msgstr "Асоційовані типи" -#: src/SUMMARY.md src/methods-and-traits/deriving.md:5 +#: src/SUMMARY.md:90 src/methods-and-traits.md:9 +#: src/methods-and-traits/deriving.md:1 msgid "Deriving" msgstr "Виведення" -#: src/SUMMARY.md +#: src/SUMMARY.md:91 src/methods-and-traits.md:10 msgid "Exercise: Generic Logger" msgstr "Вправа: Загальний логгер" -#: src/SUMMARY.md +#: src/SUMMARY.md:94 msgid "Day 2: Afternoon" msgstr "День 2: Полудень" -#: src/SUMMARY.md src/generics.md +#: src/SUMMARY.md:97 src/running-the-course/course-structure.md:43 +#: src/welcome-day-2-afternoon.md:7 src/generics.md:1 msgid "Generics" msgstr "Узагальнені типи" -#: src/SUMMARY.md src/generics/generic-functions.md:5 +#: src/SUMMARY.md:98 src/generics.md:7 src/generics/generic-functions.md:1 msgid "Generic Functions" msgstr "Узагальнені функції" -#: src/SUMMARY.md src/generics/generic-data.md:5 +#: src/SUMMARY.md:99 src/generics.md:8 src/generics/generic-data.md:1 msgid "Generic Data Types" msgstr "Узагальнені типи даних" -#: src/SUMMARY.md src/generics/generic-traits.md:5 +#: src/SUMMARY.md:100 src/generics/generic-traits.md:1 msgid "Generic Traits" msgstr "Узагальнені трейти" -#: src/SUMMARY.md src/generics/trait-bounds.md:5 +#: src/SUMMARY.md:101 src/generics.md:9 src/generics/trait-bounds.md:1 msgid "Trait Bounds" msgstr "Обмеження трейту" -#: src/SUMMARY.md src/generics/impl-trait.md:5 +#: src/SUMMARY.md:102 src/generics/impl-trait.md:1 msgid "`impl Trait`" msgstr "`impl Trait`" -#: src/SUMMARY.md src/generics/dyn-trait.md:5 +#: src/SUMMARY.md:103 src/generics/dyn-trait.md:1 msgid "`dyn Trait`" msgstr "`dyn Trait`" -#: src/SUMMARY.md src/generics/exercise.md:5 +#: src/SUMMARY.md:104 src/generics/exercise.md:1 msgid "Exercise: Generic `min`" msgstr "Вправа: узагальнена `min`" -#: src/SUMMARY.md src/std-types.md +#: src/SUMMARY.md:106 src/running-the-course/course-structure.md:44 +#: src/welcome-day-2-afternoon.md:8 src/std-types.md:1 msgid "Standard Library Types" msgstr "Типи стандартної бібліотеки" -#: src/SUMMARY.md src/std-types/std.md:5 +#: src/SUMMARY.md:107 src/std-types.md:7 src/std-types/std.md:1 msgid "Standard Library" msgstr "Стандартна бібліотека" -#: src/SUMMARY.md src/std-types/docs.md:5 +#: src/SUMMARY.md:108 src/std-types.md:8 src/std-types/docs.md:1 msgid "Documentation" msgstr "Документація" -#: src/SUMMARY.md +#: src/SUMMARY.md:109 msgid "`Option`" msgstr "`Option`" -#: src/SUMMARY.md src/error-handling/result.md:5 +#: src/SUMMARY.md:110 src/SUMMARY.md:196 src/error-handling/result.md:1 msgid "`Result`" msgstr "`Result`" -#: src/SUMMARY.md src/android/aidl/types/primitives.md:14 +#: src/SUMMARY.md:111 src/android/aidl/types/primitives.md:14 #: src/android/interoperability/cpp/type-mapping.md:5 msgid "`String`" msgstr "`String`" -#: src/SUMMARY.md src/std-types/vec.md:5 +#: src/SUMMARY.md:112 src/std-types/vec.md:1 msgid "`Vec`" msgstr "`Vec`" -#: src/SUMMARY.md src/std-types/hashmap.md:5 src/bare-metal/no_std.md +#: src/SUMMARY.md:113 src/std-types/hashmap.md:1 src/bare-metal/no_std.md:46 msgid "`HashMap`" msgstr "`HashMap`" -#: src/SUMMARY.md src/std-types/exercise.md:5 +#: src/SUMMARY.md:114 src/std-types.md:14 src/std-types/exercise.md:1 msgid "Exercise: Counter" msgstr "Вправа: Лічильник" -#: src/SUMMARY.md src/std-traits.md +#: src/SUMMARY.md:116 src/running-the-course/course-structure.md:45 +#: src/welcome-day-2-afternoon.md:9 src/std-traits.md:1 msgid "Standard Library Traits" msgstr "Трейти стандартної бібліотеки" -#: src/SUMMARY.md src/std-traits/comparisons.md:5 -#: src/concurrency/welcome-async.md +#: src/SUMMARY.md:117 src/std-traits.md:7 src/std-traits/comparisons.md:1 +#: src/concurrency/welcome-async.md:17 msgid "Comparisons" msgstr "Порівняння" -#: src/SUMMARY.md src/std-traits/operators.md:5 +#: src/SUMMARY.md:118 src/std-traits.md:8 src/std-traits/operators.md:1 msgid "Operators" msgstr "Оператори" -#: src/SUMMARY.md src/std-traits/from-and-into.md:5 +#: src/SUMMARY.md:119 src/std-traits/from-and-into.md:1 msgid "`From` and `Into`" msgstr "`From` та `Into`" -#: src/SUMMARY.md src/std-traits/casting.md:5 +#: src/SUMMARY.md:120 src/std-traits.md:10 src/std-traits/casting.md:1 msgid "Casting" msgstr "Приведення" -#: src/SUMMARY.md src/std-traits/read-and-write.md:5 +#: src/SUMMARY.md:121 src/std-traits/read-and-write.md:1 msgid "`Read` and `Write`" msgstr "`Read` та `Write`" -#: src/SUMMARY.md +#: src/SUMMARY.md:122 msgid "`Default`, struct update syntax" msgstr "`Default`, синтаксис оновлення структури" -#: src/SUMMARY.md src/std-traits/closures.md:5 +#: src/SUMMARY.md:123 src/std-traits.md:13 src/std-traits/closures.md:1 msgid "Closures" msgstr "Закриття" -#: src/SUMMARY.md src/std-traits/exercise.md:5 +#: src/SUMMARY.md:124 src/std-traits.md:14 src/std-traits/exercise.md:1 msgid "Exercise: ROT13" msgstr "Вправа: ROT13" -#: src/SUMMARY.md +#: src/SUMMARY.md:129 msgid "Day 3: Morning" msgstr "День 3: Ранок" -#: src/SUMMARY.md src/memory-management.md +#: src/SUMMARY.md:132 src/running-the-course/course-structure.md:53 +#: src/welcome-day-3.md:16 src/memory-management.md:1 msgid "Memory Management" msgstr "Управління пам'яттю" -#: src/SUMMARY.md src/memory-management/review.md:5 +#: src/SUMMARY.md:133 src/memory-management.md:7 +#: src/memory-management/review.md:1 msgid "Review of Program Memory" msgstr "Огляд пам'яті програми" -#: src/SUMMARY.md src/memory-management/approaches.md:5 +#: src/SUMMARY.md:134 src/memory-management.md:8 +#: src/memory-management/approaches.md:1 msgid "Approaches to Memory Management" msgstr "Підходи до управління пам'яттю" -#: src/SUMMARY.md src/memory-management/ownership.md:5 +#: src/SUMMARY.md:135 src/memory-management.md:9 +#: src/memory-management/ownership.md:1 msgid "Ownership" msgstr "Володіння" -#: src/SUMMARY.md src/memory-management/move.md:5 +#: src/SUMMARY.md:136 src/memory-management.md:10 +#: src/memory-management/move.md:1 msgid "Move Semantics" msgstr "Семантика переміщення" -#: src/SUMMARY.md +#: src/SUMMARY.md:137 msgid "`Clone`" msgstr "`Clone`" -#: src/SUMMARY.md src/memory-management/copy-types.md:5 +#: src/SUMMARY.md:138 src/memory-management.md:12 +#: src/memory-management/copy-types.md:1 msgid "Copy Types" msgstr "Типи які копіюються" -#: src/SUMMARY.md +#: src/SUMMARY.md:139 msgid "`Drop`" msgstr "`Drop`" -#: src/SUMMARY.md src/memory-management/exercise.md:5 +#: src/SUMMARY.md:140 src/memory-management.md:14 +#: src/memory-management/exercise.md:1 msgid "Exercise: Builder Type" msgstr "Вправа: Тип будівельника" -#: src/SUMMARY.md src/smart-pointers.md +#: src/SUMMARY.md:142 src/running-the-course/course-structure.md:54 +#: src/welcome-day-3.md:17 src/smart-pointers.md:1 msgid "Smart Pointers" msgstr "Розумні вказівники" -#: src/SUMMARY.md src/smart-pointers/box.md:5 +#: src/SUMMARY.md:143 src/smart-pointers/box.md:1 #: src/android/interoperability/cpp/type-mapping.md:9 msgid "`Box`" msgstr "`Box`" -#: src/SUMMARY.md src/smart-pointers/rc.md:5 +#: src/SUMMARY.md:144 src/smart-pointers/rc.md:1 msgid "`Rc`" msgstr "`Rc`" -#: src/SUMMARY.md src/smart-pointers/trait-objects.md:5 +#: src/SUMMARY.md:145 src/smart-pointers.md:9 +#: src/smart-pointers/trait-objects.md:1 msgid "Owned Trait Objects" msgstr "Принадлежні об'єкти трейтів" -#: src/SUMMARY.md src/smart-pointers/exercise.md:5 +#: src/SUMMARY.md:146 src/smart-pointers.md:10 src/smart-pointers/exercise.md:1 msgid "Exercise: Binary Tree" msgstr "Вправа: Бінарне дерево" -#: src/SUMMARY.md +#: src/SUMMARY.md:149 msgid "Day 3: Afternoon" msgstr "День 3: Полудень" -#: src/SUMMARY.md src/borrowing.md +#: src/SUMMARY.md:152 src/running-the-course/course-structure.md:61 +#: src/welcome-day-3-afternoon.md:7 src/borrowing.md:1 msgid "Borrowing" msgstr "Запозичення" -#: src/SUMMARY.md src/borrowing/shared.md:5 +#: src/SUMMARY.md:153 src/borrowing.md:7 src/borrowing/shared.md:1 msgid "Borrowing a Value" msgstr "Запозичення значення" -#: src/SUMMARY.md src/borrowing/borrowck.md:5 +#: src/SUMMARY.md:154 src/borrowing.md:8 src/borrowing/borrowck.md:1 msgid "Borrow Checking" msgstr "Перевірка запозичення" -#: src/SUMMARY.md src/borrowing/examples.md:5 +#: src/SUMMARY.md:155 src/borrowing.md:9 src/borrowing/examples.md:1 msgid "Borrow Errors" msgstr "Помилки запозичення" -#: src/SUMMARY.md src/borrowing/interior-mutability.md:5 +#: src/SUMMARY.md:156 src/borrowing.md:10 +#: src/borrowing/interior-mutability.md:1 msgid "Interior Mutability" msgstr "Внутрішня мутабельність" -#: src/SUMMARY.md src/borrowing/exercise.md:5 +#: src/SUMMARY.md:157 src/borrowing.md:11 src/borrowing/exercise.md:1 msgid "Exercise: Health Statistics" msgstr "Вправа: Статистика здоров’я" -#: src/SUMMARY.md src/lifetimes.md +#: src/SUMMARY.md:159 src/running-the-course/course-structure.md:62 +#: src/welcome-day-3-afternoon.md:8 src/lifetimes.md:1 msgid "Lifetimes" msgstr "Тривалість життя" -#: src/SUMMARY.md src/lifetimes/lifetime-annotations.md:5 +#: src/SUMMARY.md:160 src/lifetimes.md:7 +#: src/lifetimes/lifetime-annotations.md:1 msgid "Lifetime Annotations" msgstr "Анотації тривалісті життя" -#: src/SUMMARY.md +#: src/SUMMARY.md:161 src/lifetimes.md:8 msgid "Lifetime Elision" msgstr "Упущення тривалісті життя" -#: src/SUMMARY.md +#: src/SUMMARY.md:162 src/lifetimes.md:9 msgid "Struct Lifetimes" msgstr "Тривалість життя структур" -#: src/SUMMARY.md src/lifetimes/exercise.md:5 +#: src/SUMMARY.md:163 src/lifetimes.md:10 src/lifetimes/exercise.md:1 msgid "Exercise: Protobuf Parsing" msgstr "Вправа: Розбір Protobuf" -#: src/SUMMARY.md +#: src/SUMMARY.md:168 msgid "Day 4: Morning" msgstr "День 4: Ранок" -#: src/SUMMARY.md src/iterators.md +#: src/SUMMARY.md:171 src/running-the-course/course-structure.md:70 +#: src/welcome-day-4.md:18 src/iterators.md:1 msgid "Iterators" msgstr "Ітератори" -#: src/SUMMARY.md src/iterators/iterator.md:5 src/bare-metal/no_std.md +#: src/SUMMARY.md:172 src/iterators/iterator.md:1 src/bare-metal/no_std.md:28 msgid "`Iterator`" msgstr "`Ітератор`" -#: src/SUMMARY.md src/iterators/intoiterator.md:5 +#: src/SUMMARY.md:173 src/iterators/intoiterator.md:1 msgid "`IntoIterator`" msgstr "`IntoIterator`" -#: src/SUMMARY.md +#: src/SUMMARY.md:174 msgid "`FromIterator`" msgstr "`FromIterator`" -#: src/SUMMARY.md src/iterators/exercise.md:5 +#: src/SUMMARY.md:175 src/iterators.md:10 src/iterators/exercise.md:1 msgid "Exercise: Iterator Method Chaining" msgstr "Вправа: ланцюжок методів ітератора" -#: src/SUMMARY.md src/modules.md src/modules/modules.md:5 +#: src/SUMMARY.md:177 src/SUMMARY.md:178 +#: src/running-the-course/course-structure.md:71 src/welcome-day-4.md:19 +#: src/modules.md:1 src/modules.md:7 src/modules/modules.md:1 msgid "Modules" msgstr "Модулі" -#: src/SUMMARY.md src/modules/filesystem.md:5 +#: src/SUMMARY.md:179 src/modules.md:8 src/modules/filesystem.md:1 msgid "Filesystem Hierarchy" msgstr "Ієрархія файлової системи" -#: src/SUMMARY.md src/modules/visibility.md:5 +#: src/SUMMARY.md:180 src/modules.md:9 src/modules/visibility.md:1 msgid "Visibility" msgstr "Видимість" -#: src/SUMMARY.md +#: src/SUMMARY.md:181 msgid "`use`, `super`, `self`" msgstr "`use`, `super`, `self`" -#: src/SUMMARY.md src/modules/exercise.md:5 +#: src/SUMMARY.md:182 src/modules.md:11 src/modules/exercise.md:1 msgid "Exercise: Modules for a GUI Library" msgstr "Вправа: Модулі для бібліотеки графічного інтерфейсу користувача" -#: src/SUMMARY.md src/testing.md src/chromium/testing.md +#: src/SUMMARY.md:184 src/SUMMARY.md:239 src/SUMMARY.md:275 +#: src/running-the-course/course-structure.md:72 src/welcome-day-4.md:20 +#: src/testing.md:1 src/chromium/testing.md:1 msgid "Testing" msgstr "Тестування" -#: src/SUMMARY.md +#: src/SUMMARY.md:185 src/testing.md:7 msgid "Test Modules" msgstr "Тестові модулі" -#: src/SUMMARY.md src/testing/other.md:5 +#: src/SUMMARY.md:186 src/testing.md:8 src/testing/other.md:1 msgid "Other Types of Tests" msgstr "Інші типи тестів" -#: src/SUMMARY.md src/testing/lints.md:5 +#: src/SUMMARY.md:187 src/testing.md:9 src/testing/lints.md:1 msgid "Compiler Lints and Clippy" msgstr "Лінти компілятора та Clippy" -#: src/SUMMARY.md src/testing/exercise.md:5 +#: src/SUMMARY.md:188 src/testing.md:10 src/testing/exercise.md:1 msgid "Exercise: Luhn Algorithm" msgstr "Вправа: Алгоритм Луна" -#: src/SUMMARY.md +#: src/SUMMARY.md:191 msgid "Day 4: Afternoon" msgstr "День 4: Полудень" -#: src/SUMMARY.md src/error-handling.md +#: src/SUMMARY.md:194 src/running-the-course/course-structure.md:79 +#: src/welcome-day-4-afternoon.md:7 src/error-handling.md:1 msgid "Error Handling" msgstr "Обробка помилок" -#: src/SUMMARY.md src/error-handling/panics.md:5 +#: src/SUMMARY.md:195 src/error-handling.md:7 src/error-handling/panics.md:1 msgid "Panics" msgstr "Паніки" -#: src/SUMMARY.md src/error-handling/try.md:5 +#: src/SUMMARY.md:197 src/error-handling.md:9 src/error-handling/try.md:1 msgid "Try Operator" msgstr "Оператор спроб" -#: src/SUMMARY.md src/error-handling/try-conversions.md:5 +#: src/SUMMARY.md:198 src/error-handling.md:10 +#: src/error-handling/try-conversions.md:1 msgid "Try Conversions" msgstr "Перетворення спроб" -#: src/SUMMARY.md +#: src/SUMMARY.md:199 msgid "`Error` Trait" msgstr "`Error` трейт" -#: src/SUMMARY.md src/error-handling/thiserror.md:5 +#: src/SUMMARY.md:200 src/error-handling/thiserror.md:1 msgid "`thiserror`" msgstr "`thiserror`" -#: src/SUMMARY.md src/error-handling/anyhow.md:5 +#: src/SUMMARY.md:201 src/error-handling/anyhow.md:1 msgid "`anyhow`" msgstr "`anyhow`" -#: src/SUMMARY.md +#: src/SUMMARY.md:202 msgid "Exercise: Rewriting with `Result`" msgstr "Вправа: Переписування с `Result`" -#: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/unsafe.md:5 +#: src/SUMMARY.md:204 src/running-the-course/course-structure.md:80 +#: src/welcome-day-4-afternoon.md:8 src/unsafe-rust.md:1 +#: src/unsafe-rust/unsafe.md:1 msgid "Unsafe Rust" msgstr "Небезпечний Rust" -#: src/SUMMARY.md +#: src/SUMMARY.md:205 src/unsafe-rust.md:7 msgid "Unsafe" msgstr "Unsafe" -#: src/SUMMARY.md src/unsafe-rust/dereferencing.md:5 +#: src/SUMMARY.md:206 src/unsafe-rust.md:8 src/unsafe-rust/dereferencing.md:1 msgid "Dereferencing Raw Pointers" msgstr "Розіменування \"сирих\" вказівників" -#: src/SUMMARY.md src/unsafe-rust/mutable-static.md:5 +#: src/SUMMARY.md:207 src/unsafe-rust.md:9 src/unsafe-rust/mutable-static.md:1 msgid "Mutable Static Variables" msgstr "Несталі статичні змінні" -#: src/SUMMARY.md src/unsafe-rust/unions.md:5 +#: src/SUMMARY.md:208 src/unsafe-rust.md:10 src/unsafe-rust/unions.md:1 msgid "Unions" msgstr "Об'єднання" -#: src/SUMMARY.md src/unsafe-rust/unsafe-functions.md:5 +#: src/SUMMARY.md:209 src/unsafe-rust.md:11 +#: src/unsafe-rust/unsafe-functions.md:1 msgid "Unsafe Functions" msgstr "Небезпечні функції" -#: src/SUMMARY.md +#: src/SUMMARY.md:210 src/unsafe-rust.md:12 msgid "Unsafe Traits" msgstr "Небезпечні трейти" -#: src/SUMMARY.md +#: src/SUMMARY.md:211 src/unsafe-rust.md:13 msgid "Exercise: FFI Wrapper" msgstr "Вправа: обгортка FFI" -#: src/SUMMARY.md src/bare-metal/android.md +#: src/SUMMARY.md:214 msgid "Android" msgstr "Android" -#: src/SUMMARY.md src/android/setup.md src/chromium/setup.md +#: src/SUMMARY.md:219 src/SUMMARY.md:267 src/android/setup.md:1 +#: src/chromium/setup.md:1 msgid "Setup" msgstr "Установка" -#: src/SUMMARY.md src/android/build-rules.md +#: src/SUMMARY.md:220 src/SUMMARY.md:270 src/android/build-rules.md:1 msgid "Build Rules" msgstr "Правила побудови" -#: src/SUMMARY.md +#: src/SUMMARY.md:221 msgid "Binary" msgstr "Бінарний файл" -#: src/SUMMARY.md +#: src/SUMMARY.md:222 msgid "Library" msgstr "Бібліотека" -#: src/SUMMARY.md src/android/aidl.md +#: src/SUMMARY.md:223 src/android/aidl.md:1 msgid "AIDL" msgstr "AIDL" -#: src/SUMMARY.md src/android/aidl/birthday-service.md:1 +#: src/SUMMARY.md:224 src/android/aidl/birthday-service.md:1 msgid "Birthday Service Tutorial" msgstr "Посібник із сервісу Birthday" -#: src/SUMMARY.md +#: src/SUMMARY.md:225 msgid "Interface" msgstr "Інтерфейс" -#: src/SUMMARY.md +#: src/SUMMARY.md:226 msgid "Service API" msgstr "API сервісу" -#: src/SUMMARY.md +#: src/SUMMARY.md:227 msgid "Service" msgstr "Сервіс" -#: src/SUMMARY.md +#: src/SUMMARY.md:228 msgid "Server" msgstr "Сервер" -#: src/SUMMARY.md src/android/aidl/example-service/deploy.md:1 +#: src/SUMMARY.md:229 src/android/aidl/example-service/deploy.md:1 msgid "Deploy" msgstr "Розгортка" -#: src/SUMMARY.md +#: src/SUMMARY.md:230 msgid "Client" msgstr "Кліент" -#: src/SUMMARY.md src/android/aidl/example-service/changing-definition.md:1 +#: src/SUMMARY.md:231 src/android/aidl/example-service/changing-definition.md:1 msgid "Changing API" msgstr "Зміна API" -#: src/SUMMARY.md +#: src/SUMMARY.md:232 msgid "Updating Implementations" msgstr "Оновлення реалізацій" -#: src/SUMMARY.md +#: src/SUMMARY.md:233 msgid "AIDL Types" msgstr "AIDL типи" -#: src/SUMMARY.md src/android/aidl/types/primitives.md:1 +#: src/SUMMARY.md:234 src/android/aidl/types/primitives.md:1 msgid "Primitive Types" msgstr "Примітивні типи" -#: src/SUMMARY.md src/android/aidl/types/arrays.md:1 +#: src/SUMMARY.md:235 src/android/aidl/types/arrays.md:1 msgid "Array Types" msgstr "Типи Масивів" -#: src/SUMMARY.md src/android/aidl/types/objects.md:1 +#: src/SUMMARY.md:236 src/android/aidl/types/objects.md:1 msgid "Sending Objects" msgstr "Надсилання об'єктів" -#: src/SUMMARY.md src/android/aidl/types/parcelables.md:1 +#: src/SUMMARY.md:237 src/android/aidl/types/parcelables.md:1 msgid "Parcelables" msgstr "Посилкові данні" -#: src/SUMMARY.md src/android/aidl/types/file-descriptor.md:1 +#: src/SUMMARY.md:238 src/android/aidl/types/file-descriptor.md:1 msgid "Sending Files" msgstr "Надсилання файлів" -#: src/SUMMARY.md src/android/testing/googletest.md:5 +#: src/SUMMARY.md:240 src/android/testing/googletest.md:1 msgid "GoogleTest" msgstr "GoogleTest" -#: src/SUMMARY.md src/android/testing/mocking.md:5 +#: src/SUMMARY.md:241 src/android/testing/mocking.md:1 msgid "Mocking" msgstr "Mocking" -#: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md:1 +#: src/SUMMARY.md:242 src/SUMMARY.md:339 src/android/logging.md:1 +#: src/bare-metal/aps/logging.md:1 msgid "Logging" msgstr "Журналювання" -#: src/SUMMARY.md src/android/interoperability.md +#: src/SUMMARY.md:243 src/android/interoperability.md:1 msgid "Interoperability" msgstr "Інтероперабельність" -#: src/SUMMARY.md +#: src/SUMMARY.md:244 msgid "With C" msgstr "З С" -#: src/SUMMARY.md +#: src/SUMMARY.md:245 msgid "Calling C with Bindgen" msgstr "Виклик С за допомогою Bindgen" -#: src/SUMMARY.md +#: src/SUMMARY.md:246 msgid "Calling Rust from C" msgstr "Виклик Rust з C" -#: src/SUMMARY.md src/android/interoperability/cpp.md:1 +#: src/SUMMARY.md:247 src/android/interoperability/cpp.md:1 msgid "With C++" msgstr "З С++" -#: src/SUMMARY.md src/android/interoperability/cpp/bridge.md:1 +#: src/SUMMARY.md:248 src/android/interoperability/cpp/bridge.md:1 msgid "The Bridge Module" msgstr "Модуль Bridge" -#: src/SUMMARY.md +#: src/SUMMARY.md:249 msgid "Rust Bridge" msgstr "Rust Bridge" -#: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md:1 +#: src/SUMMARY.md:250 src/android/interoperability/cpp/generated-cpp.md:1 msgid "Generated C++" msgstr "Згенерований C++" -#: src/SUMMARY.md +#: src/SUMMARY.md:251 msgid "C++ Bridge" msgstr "C++ Bridge" -#: src/SUMMARY.md src/android/interoperability/cpp/shared-types.md:1 +#: src/SUMMARY.md:252 src/android/interoperability/cpp/shared-types.md:1 msgid "Shared Types" msgstr "Спільні типи" -#: src/SUMMARY.md src/android/interoperability/cpp/shared-enums.md:1 +#: src/SUMMARY.md:253 src/android/interoperability/cpp/shared-enums.md:1 msgid "Shared Enums" msgstr "Спільні переліки" -#: src/SUMMARY.md src/android/interoperability/cpp/rust-result.md:1 +#: src/SUMMARY.md:254 src/android/interoperability/cpp/rust-result.md:1 msgid "Rust Error Handling" msgstr "Обробка помилок в Rust" -#: src/SUMMARY.md src/android/interoperability/cpp/cpp-exception.md:1 +#: src/SUMMARY.md:255 src/android/interoperability/cpp/cpp-exception.md:1 msgid "C++ Error Handling" msgstr "Обробка помилок в C++" -#: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md:1 +#: src/SUMMARY.md:256 src/android/interoperability/cpp/type-mapping.md:1 msgid "Additional Types" msgstr "Додаткові типи" -#: src/SUMMARY.md +#: src/SUMMARY.md:257 msgid "Building for Android: C++" msgstr "Збірка для Android: C++" -#: src/SUMMARY.md +#: src/SUMMARY.md:258 msgid "Building for Android: Genrules" msgstr "Збірка для Android: Genrules" -#: src/SUMMARY.md +#: src/SUMMARY.md:259 msgid "Building for Android: Rust" msgstr "Збірка для Android: Rust" -#: src/SUMMARY.md +#: src/SUMMARY.md:260 msgid "With Java" msgstr "З Java" -#: src/SUMMARY.md src/exercises/android/morning.md -#: src/exercises/bare-metal/morning.md src/exercises/bare-metal/afternoon.md -#: src/concurrency/sync-exercises.md src/concurrency/async-exercises.md -msgid "Exercises" -msgstr "Вправи" - -#: src/SUMMARY.md +#: src/SUMMARY.md:262 msgid "Chromium" msgstr "Chromium" -#: src/SUMMARY.md src/chromium/cargo.md +#: src/SUMMARY.md:268 src/chromium/cargo.md:1 msgid "Comparing Chromium and Cargo Ecosystems" msgstr "Порівняння екосистем Chromium і Cargo" -#: src/SUMMARY.md +#: src/SUMMARY.md:269 msgid "Policy" msgstr "Політика" -#: src/SUMMARY.md +#: src/SUMMARY.md:271 msgid "Unsafe Code" msgstr "Небезпечний код" -#: src/SUMMARY.md src/chromium/build-rules/depending.md:1 +#: src/SUMMARY.md:272 src/chromium/build-rules/depending.md:1 msgid "Depending on Rust Code from Chromium C++" msgstr "Залежнісь Chromium C++ від коду Rust" -#: src/SUMMARY.md src/chromium/build-rules/vscode.md:1 +#: src/SUMMARY.md:273 src/chromium/build-rules/vscode.md:1 msgid "Visual Studio Code" msgstr "Visual Studio Code" -#: src/SUMMARY.md src/exercises/chromium/third-party.md:1 +#: src/SUMMARY.md:274 src/SUMMARY.md:279 src/SUMMARY.md:287 src/SUMMARY.md:300 +#: src/exercises/chromium/third-party.md:1 msgid "Exercise" msgstr "Вправа" -#: src/SUMMARY.md src/chromium/testing/rust-gtest-interop.md:1 +#: src/SUMMARY.md:276 src/chromium/testing/rust-gtest-interop.md:1 msgid "`rust_gtest_interop` Library" msgstr "Бібліотека `rust_gtest_interop`" -#: src/SUMMARY.md src/chromium/testing/build-gn.md:1 +#: src/SUMMARY.md:277 src/chromium/testing/build-gn.md:1 msgid "GN Rules for Rust Tests" msgstr "Правила GN для тестів Rust" -#: src/SUMMARY.md src/chromium/testing/chromium-import-macro.md:1 +#: src/SUMMARY.md:278 src/chromium/testing/chromium-import-macro.md:1 msgid "`chromium::import!` Macro" msgstr "Макрос `chromium::import!`" -#: src/SUMMARY.md src/chromium/interoperability-with-cpp.md +#: src/SUMMARY.md:280 src/chromium/interoperability-with-cpp.md:1 msgid "Interoperability with C++" msgstr "Взаємодія з C++" -#: src/SUMMARY.md src/chromium/interoperability-with-cpp/example-bindings.md:1 +#: src/SUMMARY.md:281 +#: src/chromium/interoperability-with-cpp/example-bindings.md:1 msgid "Example Bindings" msgstr "Приклади прив'язок" -#: src/SUMMARY.md +#: src/SUMMARY.md:282 #: src/chromium/interoperability-with-cpp/limitations-of-cxx.md:1 msgid "Limitations of CXX" msgstr "Обмеження CXX" -#: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md:1 +#: src/SUMMARY.md:283 +#: src/chromium/interoperability-with-cpp/error-handling.md:1 msgid "CXX Error Handling" msgstr "Обробка помилок в CXX" -#: src/SUMMARY.md +#: src/SUMMARY.md:284 msgid "Error Handling: QR Example" msgstr "Обробка помилок: приклад QR" -#: src/SUMMARY.md +#: src/SUMMARY.md:285 msgid "Error Handling: PNG Example" msgstr "Обробка помилок: приклад PNG" -#: src/SUMMARY.md +#: src/SUMMARY.md:286 msgid "Using CXX in Chromium" msgstr "Використання CXX у Chromium" -#: src/SUMMARY.md src/chromium/adding-third-party-crates.md +#: src/SUMMARY.md:288 src/chromium/adding-third-party-crates.md:1 msgid "Adding Third Party Crates" msgstr "Додавання крейтів третіх сторін" -#: src/SUMMARY.md +#: src/SUMMARY.md:289 msgid "Configuring Cargo.toml" msgstr "Налаштування Cargo.toml" -#: src/SUMMARY.md +#: src/SUMMARY.md:290 #: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md:1 msgid "Configuring `gnrt_config.toml`" msgstr "Налаштування `gnrt_config.toml`" -#: src/SUMMARY.md +#: src/SUMMARY.md:291 #: src/chromium/adding-third-party-crates/downloading-crates.md:1 msgid "Downloading Crates" msgstr "Завантаження крейтів" -#: src/SUMMARY.md +#: src/SUMMARY.md:292 #: src/chromium/adding-third-party-crates/generating-gn-build-rules.md:1 msgid "Generating `gn` Build Rules" msgstr "Створення правил побудови `gn`" -#: src/SUMMARY.md +#: src/SUMMARY.md:293 #: src/chromium/adding-third-party-crates/resolving-problems.md:1 msgid "Resolving Problems" msgstr "Вирішення проблем" -#: src/SUMMARY.md +#: src/SUMMARY.md:294 #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md:1 msgid "Build Scripts Which Generate Code" msgstr "Скрипти збірки, які генерують код" -#: src/SUMMARY.md +#: src/SUMMARY.md:295 #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md:1 msgid "Build Scripts Which Build C++ or Take Arbitrary Actions" msgstr "Скрипти збірки, які будують C++ або виконують довільні дії" -#: src/SUMMARY.md +#: src/SUMMARY.md:296 #: src/chromium/adding-third-party-crates/depending-on-a-crate.md:1 msgid "Depending on a Crate" msgstr "Залежнісь від крейта" -#: src/SUMMARY.md +#: src/SUMMARY.md:297 msgid "Reviews and Audits" msgstr "Перевірки та аудити" -#: src/SUMMARY.md +#: src/SUMMARY.md:298 msgid "Checking into Chromium Source Code" msgstr "Реєстрація в Chromium Source Code" -#: src/SUMMARY.md +#: src/SUMMARY.md:299 #: src/chromium/adding-third-party-crates/keeping-up-to-date.md:1 msgid "Keeping Crates Up to Date" msgstr "Підтримання крейтів в актуальному стані" -#: src/SUMMARY.md +#: src/SUMMARY.md:301 msgid "Bringing It Together - Exercise" msgstr "Зібрання усього разом - вправа" -#: src/SUMMARY.md src/exercises/chromium/solutions.md +#: src/SUMMARY.md:302 src/exercises/chromium/solutions.md:1 msgid "Exercise Solutions" msgstr "Рішення вправ" -#: src/SUMMARY.md +#: src/SUMMARY.md:304 msgid "Bare Metal: Morning" msgstr "Залізо: Ранок" -#: src/SUMMARY.md src/bare-metal/no_std.md +#: src/SUMMARY.md:309 src/bare-metal/no_std.md:1 msgid "`no_std`" msgstr "`no_std`" -#: src/SUMMARY.md +#: src/SUMMARY.md:310 msgid "A Minimal Example" msgstr "Мінімальний приклад" -#: src/SUMMARY.md src/bare-metal/no_std.md src/bare-metal/alloc.md:1 +#: src/SUMMARY.md:311 src/bare-metal/no_std.md:12 src/bare-metal/alloc.md:1 msgid "`alloc`" msgstr "`alloc`" -#: src/SUMMARY.md src/bare-metal/microcontrollers.md +#: src/SUMMARY.md:312 src/bare-metal/microcontrollers.md:1 msgid "Microcontrollers" msgstr "Мікроконтролери" -#: src/SUMMARY.md src/bare-metal/microcontrollers/mmio.md:1 +#: src/SUMMARY.md:313 src/bare-metal/microcontrollers/mmio.md:1 msgid "Raw MMIO" msgstr "Сирий ввід вивід з відображеної пам'яті (MMIO)" -#: src/SUMMARY.md +#: src/SUMMARY.md:314 msgid "PACs" msgstr "Крейти доступу до периферійних пристроїв (PACs)" -#: src/SUMMARY.md +#: src/SUMMARY.md:315 msgid "HAL Crates" msgstr "Крейти абстракції обладнання (HAL)" -#: src/SUMMARY.md +#: src/SUMMARY.md:316 msgid "Board Support Crates" msgstr "Крейти підтримки плат" -#: src/SUMMARY.md +#: src/SUMMARY.md:317 msgid "The Type State Pattern" msgstr "Шаблон стану типу" -#: src/SUMMARY.md src/bare-metal/microcontrollers/embedded-hal.md:1 +#: src/SUMMARY.md:318 src/bare-metal/microcontrollers/embedded-hal.md:1 msgid "`embedded-hal`" msgstr "`embedded-hal`" -#: src/SUMMARY.md src/bare-metal/microcontrollers/probe-rs.md:1 +#: src/SUMMARY.md:319 src/bare-metal/microcontrollers/probe-rs.md:1 msgid "`probe-rs` and `cargo-embed`" msgstr "`probe-rs` та `cargo-embed`" -#: src/SUMMARY.md src/bare-metal/microcontrollers/debugging.md:1 +#: src/SUMMARY.md:320 src/bare-metal/microcontrollers/debugging.md:1 msgid "Debugging" msgstr "Налагодження" -#: src/SUMMARY.md +#: src/SUMMARY.md:321 src/SUMMARY.md:342 msgid "Other Projects" msgstr "Інші проєкти" -#: src/SUMMARY.md src/exercises/bare-metal/compass.md:1 +#: src/SUMMARY.md:322 src/SUMMARY.md:351 src/SUMMARY.md:376 src/SUMMARY.md:399 +#: src/running-the-course/course-structure.md:155 +#: src/running-the-course/course-structure.md:165 +#: src/exercises/bare-metal/morning.md:1 +#: src/exercises/bare-metal/afternoon.md:1 src/concurrency/welcome.md:20 +#: src/concurrency/sync-exercises.md:1 src/concurrency/welcome-async.md:36 +#: src/concurrency/async-exercises.md:1 +msgid "Exercises" +msgstr "Вправи" + +#: src/SUMMARY.md:323 src/exercises/bare-metal/compass.md:1 #: src/exercises/bare-metal/solutions-morning.md:3 msgid "Compass" msgstr "Компас" -#: src/SUMMARY.md src/concurrency/sync-exercises/solutions.md:5 -#: src/concurrency/async-exercises/solutions.md:5 +#: src/SUMMARY.md:324 src/SUMMARY.md:353 src/SUMMARY.md:379 src/SUMMARY.md:402 +#: src/concurrency/sync-exercises.md:9 +#: src/concurrency/sync-exercises/solutions.md:1 +#: src/concurrency/async-exercises.md:9 +#: src/concurrency/async-exercises/solutions.md:1 msgid "Solutions" msgstr "Рішення" -#: src/SUMMARY.md +#: src/SUMMARY.md:326 msgid "Bare Metal: Afternoon" msgstr "Залізо: Полудень" -#: src/SUMMARY.md +#: src/SUMMARY.md:328 msgid "Application Processors" msgstr "Прикладні процесори" -#: src/SUMMARY.md src/bare-metal/aps/entry-point.md:1 +#: src/SUMMARY.md:329 src/bare-metal/aps/entry-point.md:1 msgid "Getting Ready to Rust" msgstr "Підготовка до Rust" -#: src/SUMMARY.md +#: src/SUMMARY.md:330 msgid "Inline Assembly" msgstr "Вбудована збірка" -#: src/SUMMARY.md +#: src/SUMMARY.md:331 msgid "MMIO" msgstr "Ввід вивід з відображеної пам'яті (MMIO)" -#: src/SUMMARY.md +#: src/SUMMARY.md:332 msgid "Let's Write a UART Driver" msgstr "Давайте напишемо драйвер UART" -#: src/SUMMARY.md +#: src/SUMMARY.md:333 msgid "More Traits" msgstr "Більше трейтів" -#: src/SUMMARY.md +#: src/SUMMARY.md:334 msgid "A Better UART Driver" msgstr "Кращий драйвер UART" -#: src/SUMMARY.md src/bare-metal/aps/better-uart/bitflags.md:1 +#: src/SUMMARY.md:335 src/bare-metal/aps/better-uart/bitflags.md:1 msgid "Bitflags" msgstr "Бітові прапорці (крейт bitflags)" -#: src/SUMMARY.md +#: src/SUMMARY.md:336 msgid "Multiple Registers" msgstr "Кілька регістрів" -#: src/SUMMARY.md src/bare-metal/aps/better-uart/driver.md:1 +#: src/SUMMARY.md:337 src/bare-metal/aps/better-uart/driver.md:1 msgid "Driver" msgstr "Драйвер" -#: src/SUMMARY.md +#: src/SUMMARY.md:338 src/SUMMARY.md:340 msgid "Using It" msgstr "Використання" -#: src/SUMMARY.md src/error-handling/result.md:54 +#: src/SUMMARY.md:341 src/error-handling/result.md:51 #: src/bare-metal/aps/exceptions.md:1 msgid "Exceptions" msgstr "Виключення" -#: src/SUMMARY.md +#: src/SUMMARY.md:343 msgid "Useful Crates" msgstr "Корисні крейти" -#: src/SUMMARY.md src/bare-metal/useful-crates/zerocopy.md:1 +#: src/SUMMARY.md:344 src/bare-metal/useful-crates/zerocopy.md:1 msgid "`zerocopy`" msgstr "`zerocopy`" -#: src/SUMMARY.md src/bare-metal/useful-crates/aarch64-paging.md:1 +#: src/SUMMARY.md:345 src/bare-metal/useful-crates/aarch64-paging.md:1 msgid "`aarch64-paging`" msgstr "`aarch64-paging`" -#: src/SUMMARY.md src/bare-metal/useful-crates/buddy_system_allocator.md:1 +#: src/SUMMARY.md:346 src/bare-metal/useful-crates/buddy_system_allocator.md:1 msgid "`buddy_system_allocator`" msgstr "`buddy_system_allocator`" -#: src/SUMMARY.md src/bare-metal/useful-crates/tinyvec.md:1 +#: src/SUMMARY.md:347 src/bare-metal/useful-crates/tinyvec.md:1 msgid "`tinyvec`" msgstr "`tinyvec`" -#: src/SUMMARY.md src/bare-metal/useful-crates/spin.md:1 +#: src/SUMMARY.md:348 src/bare-metal/useful-crates/spin.md:1 msgid "`spin`" msgstr "`spin`" -#: src/SUMMARY.md +#: src/SUMMARY.md:349 src/bare-metal/android.md:1 +msgid "Bare-Metal on Android" +msgstr "Залізо на Android" + +#: src/SUMMARY.md:350 msgid "`vmbase`" msgstr "`vmbase`" -#: src/SUMMARY.md +#: src/SUMMARY.md:352 msgid "RTC Driver" msgstr "Драйвер годинника реального часу (RTC)" -#: src/SUMMARY.md +#: src/SUMMARY.md:355 msgid "Concurrency: Morning" msgstr "Одночасність виконання: Ранок" -#: src/SUMMARY.md src/concurrency/threads.md +#: src/SUMMARY.md:360 src/running-the-course/course-structure.md:151 +#: src/concurrency/welcome.md:16 src/concurrency/threads.md:1 msgid "Threads" msgstr "Потоки" -#: src/SUMMARY.md src/concurrency/threads/plain.md:5 +#: src/SUMMARY.md:361 src/concurrency/threads.md:7 +#: src/concurrency/threads/plain.md:1 msgid "Plain Threads" msgstr "Звичайні потоки" -#: src/SUMMARY.md src/concurrency/threads/scoped.md:5 +#: src/SUMMARY.md:362 src/concurrency/threads.md:8 +#: src/concurrency/threads/scoped.md:1 msgid "Scoped Threads" msgstr "Потоки з областю видимості" -#: src/SUMMARY.md src/concurrency/channels.md +#: src/SUMMARY.md:363 src/running-the-course/course-structure.md:152 +#: src/concurrency/welcome.md:17 src/concurrency/channels.md:1 msgid "Channels" msgstr "Канали" -#: src/SUMMARY.md src/concurrency/channels/senders-receivers.md:5 +#: src/SUMMARY.md:364 src/concurrency/channels.md:7 +#: src/concurrency/channels/senders-receivers.md:1 msgid "Senders and Receivers" msgstr "Відправники та отримувачі" -#: src/SUMMARY.md src/concurrency/channels/unbounded.md:5 +#: src/SUMMARY.md:365 src/concurrency/channels.md:8 +#: src/concurrency/channels/unbounded.md:1 msgid "Unbounded Channels" msgstr "Незав'язані канали" -#: src/SUMMARY.md src/concurrency/channels/bounded.md:5 +#: src/SUMMARY.md:366 src/concurrency/channels.md:9 +#: src/concurrency/channels/bounded.md:1 msgid "Bounded Channels" msgstr "Зав'язані канали" -#: src/SUMMARY.md src/concurrency/send-sync.md +#: src/SUMMARY.md:367 src/concurrency/send-sync.md:1 msgid "`Send` and `Sync`" msgstr "`Send` та `Sync`" -#: src/SUMMARY.md src/concurrency/send-sync/marker-traits.md:5 +#: src/SUMMARY.md:368 src/concurrency/send-sync.md:7 +#: src/concurrency/send-sync/marker-traits.md:1 msgid "Marker Traits" msgstr "Маркерні трейти" -#: src/SUMMARY.md src/concurrency/send-sync/send.md:5 +#: src/SUMMARY.md:369 src/concurrency/send-sync/send.md:1 msgid "`Send`" msgstr "`Send`" -#: src/SUMMARY.md src/concurrency/send-sync/sync.md:5 +#: src/SUMMARY.md:370 src/concurrency/send-sync/sync.md:1 msgid "`Sync`" msgstr "`Sync`" -#: src/SUMMARY.md src/concurrency/send-sync/examples.md:5 +#: src/SUMMARY.md:371 src/concurrency/send-sync.md:10 +#: src/concurrency/send-sync/examples.md:1 msgid "Examples" msgstr "Приклади" -#: src/SUMMARY.md src/concurrency/shared-state.md +#: src/SUMMARY.md:372 src/running-the-course/course-structure.md:154 +#: src/concurrency/welcome.md:19 src/concurrency/shared-state.md:1 msgid "Shared State" msgstr "Спільний стан" -#: src/SUMMARY.md src/concurrency/shared-state/arc.md:5 +#: src/SUMMARY.md:373 src/concurrency/shared-state/arc.md:1 msgid "`Arc`" msgstr "`Arc`" -#: src/SUMMARY.md src/concurrency/shared-state/mutex.md:5 +#: src/SUMMARY.md:374 src/concurrency/shared-state/mutex.md:1 msgid "`Mutex`" msgstr "`Mutex`" -#: src/SUMMARY.md src/memory-management/review.md:20 -#: src/error-handling/try-conversions.md:27 -#: src/concurrency/shared-state/example.md:5 +#: src/SUMMARY.md:375 src/memory-management/review.md:16 +#: src/error-handling/try-conversions.md:23 src/concurrency/shared-state.md:9 +#: src/concurrency/shared-state/example.md:1 msgid "Example" msgstr "Приклад" -#: src/SUMMARY.md src/concurrency/sync-exercises/dining-philosophers.md:5 -#: src/concurrency/sync-exercises/solutions.md:7 +#: src/SUMMARY.md:377 src/SUMMARY.md:400 src/concurrency/sync-exercises.md:7 +#: src/concurrency/sync-exercises/dining-philosophers.md:1 +#: src/concurrency/sync-exercises/solutions.md:3 +#: src/concurrency/async-exercises.md:7 msgid "Dining Philosophers" msgstr "Вечеря філософів" -#: src/SUMMARY.md src/concurrency/sync-exercises/link-checker.md:5 +#: src/SUMMARY.md:378 src/concurrency/sync-exercises.md:8 +#: src/concurrency/sync-exercises/link-checker.md:1 msgid "Multi-threaded Link Checker" msgstr "Перевірка багатопоточних посилань" -#: src/SUMMARY.md +#: src/SUMMARY.md:381 msgid "Concurrency: Afternoon" msgstr "Одночасність виконання: Полудень" -#: src/SUMMARY.md src/concurrency/async.md +#: src/SUMMARY.md:384 src/running-the-course/course-structure.md:162 +#: src/concurrency/welcome-async.md:33 src/concurrency/async.md:1 msgid "Async Basics" msgstr "Основи асинхронізації" -#: src/SUMMARY.md src/concurrency/async/async-await.md:5 +#: src/SUMMARY.md:385 src/concurrency/async/async-await.md:1 msgid "`async`/`await`" msgstr "`async`/`await`" -#: src/SUMMARY.md src/concurrency/async/futures.md:5 +#: src/SUMMARY.md:386 src/concurrency/async.md:8 +#: src/concurrency/async/futures.md:1 msgid "Futures" msgstr "Futures" -#: src/SUMMARY.md src/concurrency/async/runtimes.md:5 +#: src/SUMMARY.md:387 src/concurrency/async.md:9 +#: src/concurrency/async/runtimes.md:1 msgid "Runtimes" msgstr "Середовища виконання" -#: src/SUMMARY.md src/concurrency/async/runtimes/tokio.md:1 +#: src/SUMMARY.md:388 src/concurrency/async/runtimes/tokio.md:1 msgid "Tokio" msgstr "Токіо" -#: src/SUMMARY.md src/concurrency/sync-exercises/link-checker.md:123 -#: src/concurrency/async/tasks.md:5 -#: src/concurrency/async-exercises/chat-app.md:147 +#: src/SUMMARY.md:389 src/concurrency/sync-exercises/link-checker.md:119 +#: src/concurrency/async.md:10 src/concurrency/async/tasks.md:1 +#: src/concurrency/async-exercises/chat-app.md:143 msgid "Tasks" msgstr "Завдання" -#: src/SUMMARY.md src/concurrency/async-control-flow.md +#: src/SUMMARY.md:390 src/running-the-course/course-structure.md:163 +#: src/concurrency/welcome-async.md:34 src/concurrency/async-control-flow.md:1 msgid "Channels and Control Flow" msgstr "Канали та потік управління" -#: src/SUMMARY.md src/concurrency/async-control-flow/channels.md:5 +#: src/SUMMARY.md:391 src/concurrency/async-control-flow.md:7 +#: src/concurrency/async-control-flow/channels.md:1 msgid "Async Channels" msgstr "Асинхронні канали" -#: src/SUMMARY.md src/concurrency/async-control-flow/join.md:5 +#: src/SUMMARY.md:392 src/concurrency/async-control-flow.md:8 +#: src/concurrency/async-control-flow/join.md:1 msgid "Join" msgstr "Join" -#: src/SUMMARY.md src/concurrency/async-control-flow/select.md:5 +#: src/SUMMARY.md:393 src/concurrency/async-control-flow.md:9 +#: src/concurrency/async-control-flow/select.md:1 msgid "Select" msgstr "Select" -#: src/SUMMARY.md src/concurrency/async-pitfalls.md +#: src/SUMMARY.md:394 src/running-the-course/course-structure.md:164 +#: src/concurrency/welcome-async.md:35 src/concurrency/async-pitfalls.md:1 msgid "Pitfalls" msgstr "Підводні камені" -#: src/SUMMARY.md +#: src/SUMMARY.md:395 src/concurrency/async-pitfalls.md:11 msgid "Blocking the Executor" msgstr "Блокування Виконавця" -#: src/SUMMARY.md src/concurrency/async-pitfalls/pin.md:5 +#: src/SUMMARY.md:396 src/concurrency/async-pitfalls/pin.md:1 msgid "`Pin`" msgstr "`Pin`" -#: src/SUMMARY.md src/concurrency/async-pitfalls/async-traits.md:5 +#: src/SUMMARY.md:397 src/concurrency/async-pitfalls.md:13 +#: src/concurrency/async-pitfalls/async-traits.md:1 msgid "Async Traits" msgstr "Асинхронні трейти" -#: src/SUMMARY.md src/concurrency/async-pitfalls/cancellation.md:5 +#: src/SUMMARY.md:398 src/concurrency/async-pitfalls.md:14 +#: src/concurrency/async-pitfalls/cancellation.md:1 msgid "Cancellation" msgstr "Скасування" -#: src/SUMMARY.md src/concurrency/async-exercises/chat-app.md:5 -#: src/concurrency/async-exercises/solutions.md:92 +#: src/SUMMARY.md:401 src/concurrency/async-exercises.md:8 +#: src/concurrency/async-exercises/chat-app.md:1 +#: src/concurrency/async-exercises/solutions.md:87 msgid "Broadcast Chat Application" msgstr "Програма широкомовного чату" -#: src/SUMMARY.md +#: src/SUMMARY.md:404 msgid "Final Words" msgstr "Заключні слова" -#: src/SUMMARY.md src/thanks.md +#: src/SUMMARY.md:408 src/thanks.md:1 msgid "Thanks!" msgstr "Дякую!" #. Please keep { #glossary } untranslated. -#: src/SUMMARY.md src/glossary.md +#: src/SUMMARY.md:409 src/glossary.md:3 msgid "Glossary" msgstr "Глосарій" -#: src/SUMMARY.md +#: src/SUMMARY.md:410 msgid "Other Resources" msgstr "Інші ресурси" -#: src/SUMMARY.md src/credits.md +#: src/SUMMARY.md:411 src/credits.md:1 msgid "Credits" msgstr "Кредити" -#: src/index.md +#: src/index.md:3 msgid "" "[![Build workflow](https://img.shields.io/github/actions/workflow/status/" "google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/" @@ -1302,7 +1415,7 @@ msgstr "" "io/github/stars/google/comprehensive-rust?style=flat-square)](https://github." "com/google/comprehensive-rust/stargazers)" -#: src/index.md +#: src/index.md:7 msgid "" "This is a free Rust course developed by the Android team at Google. The " "course covers the full spectrum of Rust, from basic syntax to advanced " @@ -1312,7 +1425,7 @@ msgstr "" "охоплює весь спектр Rust, від базового синтаксиса до складних тем, таких як " "узагальнення (generics) и обробка помилок." -#: src/index.md +#: src/index.md:11 msgid "" "The latest version of the course can be found at . If you are reading somewhere else, please check there " @@ -1322,7 +1435,7 @@ msgstr "" "comprehensive-rust/>. Якщо ви читаєте десь в іншому місці, перевіряйте там " "на оновлення." -#: src/index.md +#: src/index.md:15 msgid "" "The course is available in other languages. Select your preferred language " "in the top right corner of the page or check the [Translations](running-the-" @@ -1332,11 +1445,11 @@ msgstr "" "куті сторінки або перегляньте сторінку [Переклади](running-the-course/" "translations.md), щоб ознайомитися зі списком усіх доступних перекладів." -#: src/index.md +#: src/index.md:20 msgid "The course is also available [as a PDF](comprehensive-rust.pdf)." msgstr "Курс також доступний [у форматі PDF](comprehensive-rust.pdf)." -#: src/index.md +#: src/index.md:22 msgid "" "The goal of the course is to teach you Rust. We assume you don't know " "anything about Rust and hope to:" @@ -1344,30 +1457,30 @@ msgstr "" "Ціль курсу навчити вас мові Rust. Ми припускаємо, що ви нічого не знаєте про " "Rust та сподіваємося:" -#: src/index.md +#: src/index.md:25 msgid "Give you a comprehensive understanding of the Rust syntax and language." msgstr "Дати вам повне уявлення про синтаксис та семантику мови Rust." -#: src/index.md +#: src/index.md:26 msgid "Enable you to modify existing programs and write new programs in Rust." msgstr "Навчити працювати з існуючим кодом та писати нові програми на Rust." -#: src/index.md +#: src/index.md:27 msgid "Show you common Rust idioms." msgstr "Показати розповсюджені ідіоми мови Rust." -#: src/index.md +#: src/index.md:29 msgid "We call the first four course days Rust Fundamentals." msgstr "Перші чотири дні курсу ми називаємо Rust Fundamentals." -#: src/index.md +#: src/index.md:31 msgid "" "Building on this, you're invited to dive into one or more specialized topics:" msgstr "" "Спираючись на це, вам пропонується зануритися в одну або кілька " "спеціалізованих тем:" -#: src/index.md +#: src/index.md:33 msgid "" "[Android](android.md): a half-day course on using Rust for Android platform " "development (AOSP). This includes interoperability with C, C++, and Java." @@ -1376,7 +1489,7 @@ msgstr "" "для розробки на платформі Android (AOSP). Сюди входить взаємодія з C, C++ та " "Java." -#: src/index.md +#: src/index.md:35 msgid "" "[Chromium](chromium.md): a half-day course on using Rust within Chromium " "based browsers. This includes interoperability with C++ and how to include " @@ -1386,7 +1499,7 @@ msgstr "" "використання Rust у браузерах на основі Chromium. Сюди входить взаємодія з C+" "+ та як включити крейти сторонніх розробників у Chromium." -#: src/index.md +#: src/index.md:38 msgid "" "[Bare-metal](bare-metal.md): a whole-day class on using Rust for bare-metal " "(embedded) development. Both microcontrollers and application processors are " @@ -1396,7 +1509,7 @@ msgstr "" "низькорівневої (embedded) розробки, що охоплює як мікроконтролери, так і " "звичайні процесори." -#: src/index.md +#: src/index.md:41 msgid "" "[Concurrency](concurrency/welcome.md): a whole-day class on concurrency in " "Rust. We cover both classical concurrency (preemptively scheduling using " @@ -1408,11 +1521,11 @@ msgstr "" "багатозадачність з використанням потоків і м'ютексів), так і async/await " "конкурентність (кооперативна багатозадачність з використанням futures)." -#: src/index.md +#: src/index.md:46 msgid "Non-Goals" msgstr "За рамками курсу" -#: src/index.md +#: src/index.md:48 msgid "" "Rust is a large language and we won't be able to cover all of it in a few " "days. Some non-goals of this course are:" @@ -1420,7 +1533,7 @@ msgstr "" "Rust це об'ємна мова, і ми не зможемо охопити її за кілька днів. Теми, що " "виходять за межі курсу:" -#: src/index.md +#: src/index.md:51 msgid "" "Learning how to develop macros: please see [Chapter 19.5 in the Rust Book]" "(https://doc.rust-lang.org/book/ch19-06-macros.html) and [Rust by Example]" @@ -1430,11 +1543,11 @@ msgstr "" "(https://doc.rust-lang.org/book/ch19-06-macros.html) та [Rust by Example]" "(https://doc.rust-lang.org/rust-by-example/macros.html)." -#: src/index.md +#: src/index.md:56 msgid "Assumptions" msgstr "Припущення" -#: src/index.md +#: src/index.md:58 msgid "" "The course assumes that you already know how to program. Rust is a " "statically-typed language and we will sometimes make comparisons with C and C" @@ -1444,7 +1557,7 @@ msgstr "" "мова, і іноді ми порівнюватимемо і зіставлятимемо її з C та C++, щоб краще " "пояснити чи підкреслити різницю у підходах до написання коду на Rust." -#: src/index.md +#: src/index.md:62 msgid "" "If you know how to program in a dynamically-typed language such as Python or " "JavaScript, then you will be able to follow along just fine too." @@ -1452,7 +1565,7 @@ msgstr "" "Якщо ви знаєте, як програмувати мовою з динамічною типізацією, наприклад " "Python або JavaScript, ви зможете також успішно пройти цей курс." -#: src/index.md +#: src/index.md:67 msgid "" "This is an example of a _speaker note_. We will use these to add additional " "information to the slides. This could be key points which the instructor " @@ -1463,11 +1576,11 @@ msgstr "" "які викладач повинен висвітлити, а також відповіді на типові питання, що " "виникають під час проходження курсу." -#: src/running-the-course.md src/running-the-course/course-structure.md:3 +#: src/running-the-course.md:3 src/running-the-course/course-structure.md:3 msgid "This page is for the course instructor." msgstr "Ця сторінка призначена для викладача курсу." -#: src/running-the-course.md +#: src/running-the-course.md:5 msgid "" "Here is a bit of background information about how we've been running the " "course internally at Google." @@ -1475,7 +1588,7 @@ msgstr "" "Ось коротка довідкова інформація про те, як ми проводили цей курс всередині " "Google." -#: src/running-the-course.md +#: src/running-the-course.md:8 msgid "" "We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break " "in the middle. This leaves 3 hours for the morning class and 3 hours for the " @@ -1487,11 +1600,11 @@ msgstr "" "післяобіднього заняття. Обидві сесії містять кілька перерв і час для роботи " "студентів над вправами." -#: src/running-the-course.md +#: src/running-the-course.md:13 msgid "Before you run the course, you will want to:" msgstr "Перед проведенням курсу бажано:" -#: src/running-the-course.md +#: src/running-the-course.md:15 msgid "" "Make yourself familiar with the course material. We've included speaker " "notes to help highlight the key points (please help us by contributing more " @@ -1506,7 +1619,7 @@ msgstr "" "маленькою стрілкою поруч з \"Нотатки для викладача\"). Таким чином ви " "матимете чистий екран, який можна представити класу." -#: src/running-the-course.md +#: src/running-the-course.md:21 msgid "" "Decide on the dates. Since the course takes four days, we recommend that you " "schedule the days over two weeks. Course participants have said that they " @@ -1518,7 +1631,7 @@ msgstr "" "сказали, що вони вважають корисним наявність прогалин у курсі, оскільки це " "допомагає їм обробити всю інформацію, яку ми їм надаємо." -#: src/running-the-course.md +#: src/running-the-course.md:26 msgid "" "Find a room large enough for your in-person participants. We recommend a " "class size of 15-25 people. That's small enough that people are comfortable " @@ -1536,7 +1649,7 @@ msgstr "" "своїми ноутбуками. Зокрема, ви будете виконувати багато програмування в " "реальному часі як інструктор, тому кафедра вам не дуже допоможе." -#: src/running-the-course.md +#: src/running-the-course.md:34 msgid "" "On the day of your course, show up to the room a little early to set things " "up. We recommend presenting directly using `mdbook serve` running on your " @@ -1553,7 +1666,7 @@ msgstr "" "також дозволить вам виправляти друкарські помилки в міру їх виявлення вами " "або учасниками курсу." -#: src/running-the-course.md +#: src/running-the-course.md:40 msgid "" "Let people solve the exercises by themselves or in small groups. We " "typically spend 30-45 minutes on exercises in the morning and in the " @@ -1571,7 +1684,7 @@ msgstr "" "запропонуйте рішення, наприклад, показавши, де знайти відповідну інформацію " "у стандартній бібліотеці." -#: src/running-the-course.md +#: src/running-the-course.md:48 msgid "" "That is all, good luck running the course! We hope it will be as much fun " "for you as it has been for us!" @@ -1579,7 +1692,7 @@ msgstr "" "На цьому все, удачі у проходженні курсу! Ми сподіваємося, що вам буде так " "само весело, як і нам!" -#: src/running-the-course.md +#: src/running-the-course.md:51 msgid "" "Please [provide feedback](https://github.com/google/comprehensive-rust/" "discussions/86) afterwards so that we can keep improving the course. We " @@ -1606,14 +1719,195 @@ msgstr "" "протікають швидко, і ми багато робимо!" #: src/running-the-course/course-structure.md:10 -msgid "{{%course outline Fundamentals}}" -msgstr "Основи Rust" +#: src/running-the-course/course-structure.md:146 +msgid "Course schedule:" +msgstr "Структура курсу" + +#: src/running-the-course/course-structure.md:11 +msgid "Day 1 Morning (2 hours and 5 minutes, including breaks)" +msgstr "День 1 Ранок (2 години 5 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:13 +#: src/running-the-course/course-structure.md:23 +#: src/running-the-course/course-structure.md:32 +#: src/running-the-course/course-structure.md:41 +#: src/running-the-course/course-structure.md:50 +#: src/running-the-course/course-structure.md:59 +#: src/running-the-course/course-structure.md:67 +#: src/running-the-course/course-structure.md:77 +#: src/running-the-course/course-structure.md:149 +#: src/running-the-course/course-structure.md:160 src/welcome-day-1.md:16 +#: src/welcome-day-1-afternoon.md:5 src/welcome-day-2.md:16 +#: src/welcome-day-2-afternoon.md:5 src/welcome-day-3.md:13 +#: src/welcome-day-3-afternoon.md:5 src/welcome-day-4.md:15 +#: src/welcome-day-4-afternoon.md:5 src/concurrency/welcome.md:14 +#: src/concurrency/welcome-async.md:31 +msgid "Segment" +msgstr "Сегмент" + +#: src/running-the-course/course-structure.md:13 +#: src/running-the-course/course-structure.md:23 +#: src/running-the-course/course-structure.md:32 +#: src/running-the-course/course-structure.md:41 +#: src/running-the-course/course-structure.md:50 +#: src/running-the-course/course-structure.md:59 +#: src/running-the-course/course-structure.md:67 +#: src/running-the-course/course-structure.md:77 +#: src/running-the-course/course-structure.md:149 +#: src/running-the-course/course-structure.md:160 src/welcome-day-1.md:16 +#: src/hello-world.md:5 src/types-and-values.md:5 src/control-flow-basics.md:5 +#: src/welcome-day-1-afternoon.md:5 src/tuples-and-arrays.md:5 +#: src/references.md:5 src/user-defined-types.md:5 src/welcome-day-2.md:16 +#: src/pattern-matching.md:5 src/methods-and-traits.md:5 +#: src/welcome-day-2-afternoon.md:5 src/generics.md:5 src/std-types.md:5 +#: src/std-traits.md:5 src/welcome-day-3.md:13 src/memory-management.md:5 +#: src/smart-pointers.md:5 src/welcome-day-3-afternoon.md:5 src/borrowing.md:5 +#: src/lifetimes.md:5 src/welcome-day-4.md:15 src/iterators.md:5 +#: src/modules.md:5 src/testing.md:5 src/welcome-day-4-afternoon.md:5 +#: src/error-handling.md:5 src/unsafe-rust.md:5 src/concurrency/welcome.md:14 +#: src/concurrency/threads.md:5 src/concurrency/channels.md:5 +#: src/concurrency/send-sync.md:5 src/concurrency/shared-state.md:5 +#: src/concurrency/sync-exercises.md:5 src/concurrency/welcome-async.md:31 +#: src/concurrency/async.md:5 src/concurrency/async-control-flow.md:5 +#: src/concurrency/async-pitfalls.md:9 src/concurrency/async-exercises.md:5 +msgid "Duration" +msgstr "Тривалість" + +#: src/running-the-course/course-structure.md:15 src/welcome-day-1.md:18 +#: src/types-and-values.md:7 src/types-and-values.md:8 +#: src/types-and-values.md:9 src/control-flow-basics.md:8 +#: src/control-flow-basics.md:10 src/tuples-and-arrays.md:7 +#: src/tuples-and-arrays.md:8 src/tuples-and-arrays.md:10 +#: src/user-defined-types.md:9 src/user-defined-types.md:10 src/generics.md:7 +#: src/generics.md:10 src/generics.md:11 src/std-types.md:8 src/std-types.md:10 +#: src/std-types.md:11 src/std-types.md:12 src/std-types.md:13 +#: src/std-traits.md:7 src/std-traits.md:8 src/std-traits.md:9 +#: src/std-traits.md:10 src/std-traits.md:11 src/std-traits.md:12 +#: src/memory-management.md:7 src/memory-management.md:9 +#: src/memory-management.md:10 src/memory-management.md:12 +#: src/smart-pointers.md:8 src/lifetimes.md:8 src/lifetimes.md:9 +#: src/iterators.md:7 src/iterators.md:8 src/iterators.md:9 src/modules.md:8 +#: src/modules.md:9 src/testing.md:7 src/testing.md:8 src/error-handling.md:8 +#: src/error-handling.md:9 src/error-handling.md:10 src/error-handling.md:11 +#: src/error-handling.md:12 src/error-handling.md:13 src/unsafe-rust.md:7 +#: src/unsafe-rust.md:9 src/unsafe-rust.md:10 src/unsafe-rust.md:11 +#: src/unsafe-rust.md:12 src/concurrency/shared-state.md:7 +#: src/concurrency/async-control-flow.md:9 src/concurrency/async-pitfalls.md:13 +msgid "5 minutes" +msgstr "5 хвилин" + +#: src/running-the-course/course-structure.md:16 +#: src/running-the-course/course-structure.md:153 src/welcome-day-1.md:19 +#: src/types-and-values.md:12 src/control-flow-basics.md:13 +#: src/tuples-and-arrays.md:11 src/references.md:11 +#: src/user-defined-types.md:12 src/methods-and-traits.md:8 src/modules.md:11 +#: src/concurrency/welcome.md:18 src/concurrency/threads.md:7 +#: src/concurrency/threads.md:8 src/concurrency/shared-state.md:8 +xmsgid "15 minutes" +msgstr "15 хвилин" + +#: src/running-the-course/course-structure.md:17 +#: src/running-the-course/course-structure.md:18 +#: src/running-the-course/course-structure.md:71 src/welcome-day-1.md:20 +#: src/welcome-day-1.md:21 src/welcome-day-4.md:19 +msgid "40 minutes" +msgstr "40 хвилин" + +#: src/running-the-course/course-structure.md:21 +msgid "Day 1 Afternoon (2 hours and 35 minutes, including breaks)" +msgstr "День 1 Полудень (2 години 35 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:25 +#: src/welcome-day-1-afternoon.md:7 +msgid "35 minutes" +msgstr "35 хвилин" + +#: src/running-the-course/course-structure.md:26 +#: src/running-the-course/course-structure.md:54 +#: src/running-the-course/course-structure.md:61 +#: src/running-the-course/course-structure.md:164 +#: src/welcome-day-1-afternoon.md:8 src/welcome-day-3.md:17 +#: src/welcome-day-3-afternoon.md:7 src/concurrency/welcome-async.md:35 +msgid "55 minutes" +msgstr "55 хвилин" + +#: src/running-the-course/course-structure.md:27 +#: src/running-the-course/course-structure.md:36 +#: src/running-the-course/course-structure.md:62 +#: src/welcome-day-1-afternoon.md:9 src/welcome-day-2.md:20 +#: src/welcome-day-3-afternoon.md:8 +msgid "50 minutes" +msgstr "50 хвилин" + +#: src/running-the-course/course-structure.md:30 +msgid "Day 2 Morning (2 hours and 10 minutes, including breaks)" +msgstr "День 2 Ранок (2 години та 10 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:34 +#: src/running-the-course/course-structure.md:52 +#: src/running-the-course/course-structure.md:69 src/hello-world.md:8 +#: src/types-and-values.md:10 src/types-and-values.md:11 +#: src/control-flow-basics.md:11 src/tuples-and-arrays.md:9 +#: src/welcome-day-2.md:18 src/methods-and-traits.md:9 src/std-types.md:7 +#: src/welcome-day-3.md:15 src/borrowing.md:9 src/welcome-day-4.md:17 +#: src/modules.md:7 src/testing.md:9 src/error-handling.md:7 +msgid "3 minutes" +msgstr "3 хвилини" + +#: src/running-the-course/course-structure.md:35 +#: src/running-the-course/course-structure.md:44 +#: src/running-the-course/course-structure.md:53 src/welcome-day-2.md:19 +#: src/welcome-day-2-afternoon.md:8 src/welcome-day-3.md:16 +msgid "1 hour" +msgstr "1 година" + +#: src/running-the-course/course-structure.md:39 +msgid "Day 2 Afternoon (3 hours and 15 minutes, including breaks)" +msgstr "День 2 Полудень (3 години та 15 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:43 +#: src/running-the-course/course-structure.md:70 +#: src/running-the-course/course-structure.md:72 +#: src/welcome-day-2-afternoon.md:7 src/welcome-day-4.md:18 +#: src/welcome-day-4.md:20 +msgid "45 minutes" +msgstr "45 хвилин" + +#: src/running-the-course/course-structure.md:45 +#: src/running-the-course/course-structure.md:155 +#: src/running-the-course/course-structure.md:165 +#: src/welcome-day-2-afternoon.md:9 src/concurrency/welcome.md:20 +#: src/concurrency/welcome-async.md:36 +msgid "1 hour and 10 minutes" +msgstr "1 година та 10 хвилин" + +#: src/running-the-course/course-structure.md:48 +msgid "Day 3 Morning (2 hours and 20 minutes, including breaks)" +msgstr "День 3 Ранок (2 години та 20 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:57 +msgid "Day 3 Afternoon (1 hour and 55 minutes, including breaks)" +msgstr "День 3 Полудень (1 година 55 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:65 +msgid "Day 4 Morning (2 hours and 40 minutes, including breaks)" +msgstr "День 4 Ранок (2 години та 40 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:75 +msgid "Day 4 Afternoon (2 hours and 20 minutes, including breaks)" +msgstr "День 4 Полудень (2 години та 20 хвилин, включаючи перерви)" -#: src/running-the-course/course-structure.md:12 +#: src/running-the-course/course-structure.md:79 +#: src/running-the-course/course-structure.md:80 +#: src/welcome-day-4-afternoon.md:7 src/welcome-day-4-afternoon.md:8 +msgid "1 hour and 5 minutes" +msgstr "1 година та 5 хвилин" + +#: src/running-the-course/course-structure.md:85 msgid "Deep Dives" msgstr "Глибоке занурення" -#: src/running-the-course/course-structure.md:14 +#: src/running-the-course/course-structure.md:87 msgid "" "In addition to the 4-day class on Rust Fundamentals, we cover some more " "specialized topics:" @@ -1621,11 +1915,11 @@ msgstr "" "На додаток до 4-денного курсу з основ Rust, ми розглянемо ще кілька " "спеціалізованих тем:" -#: src/running-the-course/course-structure.md:17 +#: src/running-the-course/course-structure.md:90 msgid "Rust in Android" msgstr "Rust в Android" -#: src/running-the-course/course-structure.md:19 +#: src/running-the-course/course-structure.md:92 msgid "" "The [Rust in Android](../android.md) deep dive is a half-day course on using " "Rust for Android platform development. This includes interoperability with " @@ -1634,7 +1928,7 @@ msgstr "" "[Rust в Android](../android.md) --- це напівденний курс з використання Rust " "для розробки на Android платформі. Сюди входить взаємодія з C, C++ та Java." -#: src/running-the-course/course-structure.md:23 +#: src/running-the-course/course-structure.md:96 msgid "" "You will need an [AOSP checkout](https://source.android.com/docs/setup/" "download/downloading). Make a checkout of the [course repository](https://" @@ -1648,7 +1942,7 @@ msgstr "" "`src/android/` в кореневий каталог вашого AOSP. Це гарантує, що система " "збирання Android побачить файли `Android.bp` в `src/android/`." -#: src/running-the-course/course-structure.md:28 +#: src/running-the-course/course-structure.md:101 msgid "" "Ensure that `adb sync` works with your emulator or real device and pre-build " "all Android examples using `src/android/build_all.sh`. Read the script to " @@ -1659,11 +1953,11 @@ msgstr "" "android/build_all.sh`. Прочитайте скрипт, щоб побачити команди, які він " "запускає, і переконайтеся, що вони працюють, коли ви запускаєте їх вручну." -#: src/running-the-course/course-structure.md:35 +#: src/running-the-course/course-structure.md:108 msgid "Rust in Chromium" msgstr "Rust в Chromium" -#: src/running-the-course/course-structure.md:37 +#: src/running-the-course/course-structure.md:110 msgid "" "The [Rust in Chromium](../chromium.md) deep dive is a half-day course on " "using Rust as part of the Chromium browser. It includes using Rust in " @@ -1675,7 +1969,7 @@ msgstr "" "Rust у системі збирання `gn` Chromium, залучення сторонніх бібліотек " "(\"крейтів\") і взаємодію з C++." -#: src/running-the-course/course-structure.md:42 +#: src/running-the-course/course-structure.md:115 msgid "" "You will need to be able to build Chromium --- a debug, component build is " "[recommended](../chromium/setup.md) for speed but any build will work. " @@ -1686,11 +1980,11 @@ msgstr "" "але будь-яка збірка буде працювати. Переконайтеся, що ви можете запустити " "веб-переглядач Chromium, який ви побудували." -#: src/running-the-course/course-structure.md:46 +#: src/running-the-course/course-structure.md:119 msgid "Bare-Metal Rust" msgstr "Rust на голому залізі" -#: src/running-the-course/course-structure.md:48 +#: src/running-the-course/course-structure.md:121 msgid "" "The [Bare-Metal Rust](../bare-metal.md) deep dive is a full day class on " "using Rust for bare-metal (embedded) development. Both microcontrollers and " @@ -1700,7 +1994,7 @@ msgstr "" "використання Rust для низькорівневої (embedded) розробки. Розглядаються як " "мікроконтролери, так і прикладні процесори." -#: src/running-the-course/course-structure.md:52 +#: src/running-the-course/course-structure.md:125 msgid "" "For the microcontroller part, you will need to buy the [BBC micro:bit]" "(https://microbit.org/) v2 development board ahead of time. Everybody will " @@ -1712,11 +2006,11 @@ msgstr "" "встановити кілька пакетів, як описано на [сторінці привітання](../bare-metal." "md)." -#: src/running-the-course/course-structure.md:57 +#: src/running-the-course/course-structure.md:130 msgid "Concurrency in Rust" msgstr "Конкурентність в Rust" -#: src/running-the-course/course-structure.md:59 +#: src/running-the-course/course-structure.md:132 msgid "" "The [Concurrency in Rust](../concurrency/welcome.md) deep dive is a full day " "class on classical as well as `async`/`await` concurrency." @@ -1724,7 +2018,7 @@ msgstr "" "[Конкурентність в Rust](../concurrency/welcome.md) це цілий день занять з " "класичної, а також `async`/`await` конкурентності." -#: src/running-the-course/course-structure.md:62 +#: src/running-the-course/course-structure.md:135 msgid "" "You will need a fresh crate set up and the dependencies downloaded and ready " "to go. You can then copy/paste the examples into `src/main.rs` to experiment " @@ -1734,15 +2028,44 @@ msgstr "" "готові до роботи. Потім ви сможете скопіювати приклади в `src/main.rs`, щоб " "поекспериментувати з ними:" -#: src/running-the-course/course-structure.md:73 -msgid "{{%course outline Concurrency}}" -msgstr "{{%course outline Concurrency}}" - -#: src/running-the-course/course-structure.md:75 +#: src/running-the-course/course-structure.md:147 +msgid "Morning (3 hours and 20 minutes, including breaks)" +msgstr "Ранок (3 години та 20 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:151 +#: src/running-the-course/course-structure.md:154 +#: src/running-the-course/course-structure.md:162 src/pattern-matching.md:11 +#: src/std-traits.md:14 src/smart-pointers.md:10 src/lifetimes.md:10 +#: src/iterators.md:10 src/testing.md:10 src/error-handling.md:14 +#: src/unsafe-rust.md:13 src/concurrency/welcome.md:16 +#: src/concurrency/welcome.md:19 src/concurrency/sync-exercises.md:9 +#: src/concurrency/welcome-async.md:33 src/concurrency/async-exercises.md:8 +msgid "30 minutes" +msgstr "30 хвилин" + +#: src/running-the-course/course-structure.md:152 +#: src/running-the-course/course-structure.md:163 src/methods-and-traits.md:10 +#: src/std-types.md:14 src/memory-management.md:14 src/borrowing.md:11 +#: src/concurrency/welcome.md:17 src/concurrency/sync-exercises.md:7 +#: src/concurrency/sync-exercises.md:8 src/concurrency/welcome-async.md:34 +#: src/concurrency/async-pitfalls.md:12 src/concurrency/async-pitfalls.md:14 +#: src/concurrency/async-exercises.md:7 src/concurrency/async-exercises.md:9 +msgid "20 minutes" +msgstr "20 хвилин" + +#: src/running-the-course/course-structure.md:153 src/concurrency/welcome.md:18 +msgid "Send and Sync" +msgstr "Send та Sync" + +#: src/running-the-course/course-structure.md:158 +msgid "Afternoon (3 hours and 20 minutes, including breaks)" +msgstr "Полудень (3 години та 20 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md:170 msgid "Format" msgstr "Формат" -#: src/running-the-course/course-structure.md:77 +#: src/running-the-course/course-structure.md:172 msgid "" "The course is meant to be very interactive and we recommend letting the " "questions drive the exploration of Rust!" @@ -1795,15 +2118,13 @@ msgid "" "by [@suetfei](https://github.com/suetfei), [@wnghl](https://github.com/" "wnghl), [@anlunx](https://github.com/anlunx), [@kongy](https://github.com/" "kongy), [@noahdragon](https://github.com/noahdragon), [@superwhd](https://" -"github.com/superwhd), [@SketchK](https://github.com/SketchK), and [@nodmp]" -"(https://github.com/nodmp)." +"github.com/superwhd), @SketchK, and [@nodmp](https://github.com/nodmp)." msgstr "" "[Китайська (спрощена)](https://google.github.io/comprehensive-rust/zh-CN/) " "від [@suetfei](https://github.com/suetfei), [@wnghl](https://github.com/" "wnghl), [@anlunx](https://github.com/anlunx), [@kongy](https://github.com/" "kongy), [@noahdragon](https://github.com/noahdragon), [@superwhd](https://" -"github.com/superwhd), [@SketchK](https://github.com/SketchK), and [@nodmp]" -"(https://github.com/nodmp)." +"github.com/superwhd), @SketchK, та [@nodmp](https://github.com/nodmp)." #: src/running-the-course/translations.md:10 msgid "" @@ -1821,6 +2142,21 @@ msgstr "" #: src/running-the-course/translations.md:12 msgid "" +"[Farsi](https://google.github.io/comprehensive-rust/fa/) by [@DannyRavi]" +"(https://github.com/DannyRavi), [@javad-jafari](https://github.com/javad-" +"jafari), [@Alix1383](https://github.com/alix1383), [@moaminsharifi](https://" +"github.com/moaminsharifi) , [@hamidrezakp](https://github.com/hamidrezakp) " +"and [@mehrad77](https://github.com/mehrad77)." +msgstr "" +"[Фарсі](https://google.github.io/comprehensive-rust/fa/) від [@Alix1383]" +"(https://github.com/alix1383), [@DannyRavi](https://github.com/DannyRavi), " +"[@hamidrezakp](https://github.com/hamidrezakp), [@javad-jafari](https://" +"github.com/javad-jafari) і [@moaminsharifi](https://github.com/" +"moaminsharifi), [@hamidrezakp](https://github.com/hamidrezakp) та [@mehrad77]" +"(https://github.com/mehrad77)." + +#: src/running-the-course/translations.md:14 +msgid "" "[Japanese](https://google.github.io/comprehensive-rust/ja/) by [@CoinEZ-JPN]" "(https://github.com/CoinEZ), [@momotaro1105](https://github.com/" "momotaro1105), [@HidenoriKobayashi](https://github.com/HidenoriKobayashi) " @@ -1831,7 +2167,7 @@ msgstr "" "momotaro1105), [@HidenoriKobayashi](https://github.com/HidenoriKobayashi) і " "[@kantasv](https://github.com/kantasv)." -#: src/running-the-course/translations.md:14 +#: src/running-the-course/translations.md:16 msgid "" "[Korean](https://google.github.io/comprehensive-rust/ko/) by [@keispace]" "(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp), " @@ -1843,7 +2179,7 @@ msgstr "" "[@jooyunghan](https://github.com/jooyunghan) та [@namhyung](https://github." "com/namhyung)." -#: src/running-the-course/translations.md:15 +#: src/running-the-course/translations.md:17 msgid "" "[Spanish](https://google.github.io/comprehensive-rust/es/) by [@deavid]" "(https://github.com/deavid)." @@ -1851,7 +2187,7 @@ msgstr "" "[Іспанська](https://google.github.io/comprehensive-rust/es) від [@deavid]" "(https://github.com/deavid)." -#: src/running-the-course/translations.md:16 +#: src/running-the-course/translations.md:18 msgid "" "[Ukrainian](https://google.github.io/comprehensive-rust/uk/) by [@git-user-" "cpp](https://github.com/git-user-cpp), [@yaremam](https://github.com/" @@ -1861,18 +2197,33 @@ msgstr "" "cpp](https://github.com/git-user-cpp), [@yaremam](https://github.com/" "yaremam) і [@reta](https://github.com/reta)." -#: src/running-the-course/translations.md:18 +#: src/running-the-course/translations.md:19 +msgid "" +"[Farsi](https://google.github.io/comprehensive-rust/fa/) by [@DannyRavi]" +"(https://github.com/DannyRavi), [@javad-jafari](https://github.com/javad-" +"jafari), [@Alix1383](https://github.com/alix1383), [@moaminsharifi](https://" +"github.com/moaminsharifi), [@hamidrezakp](https://github.com/hamidrezakp) " +"and [@mehrad77](https://github.com/mehrad77)." +msgstr "" +"[Фарсі](https://google.github.io/comprehensive-rust/fa/) від [@Alix1383]" +"(https://github.com/alix1383), [@DannyRavi](https://github.com/DannyRavi), " +"[@hamidrezakp](https://github.com/hamidrezakp), [@javad-jafari](https://" +"github.com/javad-jafari) і [@moaminsharifi](https://github.com/" +"moaminsharifi), [@hamidrezakp](https://github.com/hamidrezakp) та [@mehrad77]" +"(https://github.com/mehrad77)." + +#: src/running-the-course/translations.md:22 msgid "" "Use the language picker in the top-right corner to switch between languages." msgstr "" "Використовуйте кнопку вибору мови у верхньому правому куті для перемикання " "між мовами." -#: src/running-the-course/translations.md:20 +#: src/running-the-course/translations.md:24 msgid "Incomplete Translations" msgstr "Незавершені переклади" -#: src/running-the-course/translations.md:22 +#: src/running-the-course/translations.md:26 msgid "" "There is a large number of in-progress translations. We link to the most " "recently updated translations:" @@ -1880,7 +2231,7 @@ msgstr "" "Існує велика кількість незавершених перекладів. Ми посилаємося на останні " "оновлені переклади:" -#: src/running-the-course/translations.md:25 +#: src/running-the-course/translations.md:29 msgid "" "[Arabic](https://google.github.io/comprehensive-rust/ar/) by [@younies]" "(https://github.com/younies)" @@ -1888,7 +2239,7 @@ msgstr "" "[Арабська](https://google.github.io/comprehensive-rust/ar/) від [@younies]" "(https://github.com/younies)." -#: src/running-the-course/translations.md:26 +#: src/running-the-course/translations.md:30 msgid "" "[Bengali](https://google.github.io/comprehensive-rust/bn/) by [@raselmandol]" "(https://github.com/raselmandol)." @@ -1896,21 +2247,7 @@ msgstr "" "[Бенгальська](https://google.github.io/comprehensive-rust/bn) від " "[@raselmandol](https://github.com/raselmandol)." -#: src/running-the-course/translations.md:27 -msgid "" -"[Farsi](https://google.github.io/comprehensive-rust/fa/) by [@Alix1383]" -"(https://github.com/alix1383), [@DannyRavi](https://github.com/DannyRavi), " -"[@hamidrezakp](https://github.com/hamidrezakp), [@javad-jafari](https://" -"github.com/javad-jafari) and [@moaminsharifi](https://github.com/" -"moaminsharifi)." -msgstr "" -"[Фарсі](https://google.github.io/comprehensive-rust/fa/) від [@Alix1383]" -"(https://github.com/alix1383), [@DannyRavi](https://github.com/DannyRavi), " -"[@hamidrezakp](https://github.com/hamidrezakp), [@javad-jafari](https://" -"github.com/javad-jafari) і [@moaminsharifi](https://github.com/" -"moaminsharifi)." - -#: src/running-the-course/translations.md:29 +#: src/running-the-course/translations.md:31 msgid "" "[French](https://google.github.io/comprehensive-rust/fr/) by [@KookaS]" "(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) and " @@ -1920,7 +2257,7 @@ msgstr "" "(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) і " "[@AdrienBaudemont](https://github.com/AdrienBaudemont)." -#: src/running-the-course/translations.md:30 +#: src/running-the-course/translations.md:32 msgid "" "[German](https://google.github.io/comprehensive-rust/de/) by [@Throvn]" "(https://github.com/Throvn) and [@ronaldfw](https://github.com/ronaldfw)." @@ -1928,7 +2265,7 @@ msgstr "" "[Німецька](https://google.github.io/comprehensive-rust/de/) від [@Throvn]" "(https://github.com/Throvn) і [@ronaldfw](https://github.com/ronaldfw)." -#: src/running-the-course/translations.md:31 +#: src/running-the-course/translations.md:33 msgid "" "[Italian](https://google.github.io/comprehensive-rust/it/) by " "[@henrythebuilder](https://github.com/henrythebuilder) and [@detro](https://" @@ -1938,7 +2275,7 @@ msgstr "" "[@henrythebuilder](https://github.com/henrythebuilder) і [@detro](https://" "github.com/detro)." -#: src/running-the-course/translations.md:33 +#: src/running-the-course/translations.md:35 msgid "" "The full list of translations with their current status is also available " "either [as of their last update](https://google.github.io/comprehensive-rust/" @@ -1950,7 +2287,7 @@ msgstr "" "translation-report.html), або [синхронізований з останньою версією курсу]" "(https://google.github.io/comprehensive-rust/synced-translation-report.html)." -#: src/running-the-course/translations.md:37 +#: src/running-the-course/translations.md:39 msgid "" "If you want to help with this effort, please see [our instructions](https://" "github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md) for how to " @@ -1963,7 +2300,7 @@ msgstr "" "допомогою [трекера проблем](https://github.com/google/comprehensive-rust/" "issues/282)." -#: src/cargo.md +#: src/cargo.md:3 msgid "" "When you start reading about Rust, you will soon meet [Cargo](https://doc." "rust-lang.org/cargo/), the standard tool used in the Rust ecosystem to build " @@ -1977,15 +2314,15 @@ msgstr "" "хочемо дати короткий огляд того, що таке Cargo і як він вписується в ширшу " "екосистему і в цей курс." -#: src/cargo.md +#: src/cargo.md:9 msgid "Installation" msgstr "Встановлення" -#: src/cargo.md +#: src/cargo.md:11 msgid "**Please follow the instructions on .**" msgstr "**Дотримуйтесь інструкцій на .**" -#: src/cargo.md +#: src/cargo.md:13 msgid "" "This will give you the Cargo build tool (`cargo`) and the Rust compiler " "(`rustc`). You will also get `rustup`, a command line utility that you can " @@ -1995,7 +2332,7 @@ msgstr "" "Rust (`rustc`). Ви також отримаэте `rustup`, утиліту командної стрічки, яку " "виможете використовувати для встановлення різних версій компілятора." -#: src/cargo.md +#: src/cargo.md:17 msgid "" "After installing Rust, you should configure your editor or IDE to work with " "Rust. Most editors do this by talking to [rust-analyzer](https://rust-" @@ -2014,11 +2351,11 @@ msgstr "" "інших. Існує також інша доступна IDE під назвою [RustRover](https://www." "jetbrains.com/rust/)." -#: src/cargo.md +#: src/cargo.md:25 msgid "" "On Debian/Ubuntu, you can also install Cargo, the Rust source and the [Rust " "formatter](https://github.com/rust-lang/rustfmt) via `apt`. However, this " -"gets you an outdated rust version and may lead to unexpected behavior. The " +"gets you an outdated Rust version and may lead to unexpected behavior. The " "command would be:" msgstr "" "У Debian/Ubuntu ви можете встановити Cargo, вихідний код Rust та [Rust " @@ -2026,7 +2363,7 @@ msgstr "" "це може призвести до встановлення застарілої версії Rust і неочікуваної " "поведінки. Використовуйте таку команду: " -#: src/cargo.md +#: src/cargo.md:33 msgid "" "On macOS, you can use [Homebrew](https://brew.sh/) to install Rust, but this " "may provide an outdated version. Therefore, it is recommended to install " @@ -2080,10 +2417,10 @@ msgstr "" "документацію стандартної бібліотеки. Ви можете встановити кілька версій Rust " "одночасно і `rustup` дозволить вам перемикатися між ними за необхідності." -#: src/cargo/rust-ecosystem.md:21 src/types-and-values/hello-world.md:29 -#: src/references/exclusive.md:23 src/memory-management/move.md:156 -#: src/error-handling/try.md:56 src/android/setup.md -#: src/concurrency/async/async-await.md:29 +#: src/cargo/rust-ecosystem.md:21 src/types-and-values/hello-world.md:26 +#: src/references/exclusive.md:20 src/memory-management/move.md:153 +#: src/error-handling/try.md:53 src/android/setup.md:22 +#: src/concurrency/async/async-await.md:26 msgid "Key points:" msgstr "Ключові моменти:" @@ -2380,24 +2717,18 @@ msgstr "" "редактор. Це полегшить їм життя, тому що у них буде відповідне середовище " "розробки." -#: src/welcome-day-1.md -msgid "" -"minutes: 5 course: Fundamentals session: Day 1 Morning target_minutes: 180" -msgstr "" -"minutes: 5 course: Fundamentals session: Day 1 Morning target_minutes: 180" - -#: src/welcome-day-1.md +#: src/welcome-day-1.md:1 msgid "Welcome to Day 1" msgstr "Ласкаво просимо до Дня 1" -#: src/welcome-day-1.md +#: src/welcome-day-1.md:3 msgid "" "This is the first day of Rust Fundamentals. We will cover a lot of ground " "today:" msgstr "" "Це перший день Rust Fundamentals. Сьогодні ми розглянемо багато питань:" -#: src/welcome-day-1.md +#: src/welcome-day-1.md:5 msgid "" "Basic Rust syntax: variables, scalar and compound types, enums, structs, " "references, functions, and methods." @@ -2405,54 +2736,54 @@ msgstr "" "Базовий синтаксис Rust: змінні, скалярні та складені типи, переліки, " "структури, посилання, функції та методи." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:7 msgid "Types and type inference." msgstr "Типи та виведення типів." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:8 msgid "Control flow constructs: loops, conditionals, and so on." msgstr "Конструкції потоку управління: цикли, умовні переходи і так далі." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:9 msgid "User-defined types: structs and enums." msgstr "Типи, визначені користувачем: структури та переліки." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:10 msgid "Pattern matching: destructuring enums, structs, and arrays." msgstr "Зіставлення шаблонів: деструктуризація переліків, структур і масивів." -#: src/welcome-day-1.md src/welcome-day-2.md src/welcome-day-3.md -#: src/welcome-day-4.md src/concurrency/welcome.md -#: src/concurrency/welcome-async.md +#: src/welcome-day-1.md:12 src/welcome-day-2.md:12 src/welcome-day-3.md:9 +#: src/welcome-day-4.md:11 src/concurrency/welcome.md:10 +#: src/concurrency/welcome-async.md:27 msgid "Schedule" msgstr "Розклад" -#: src/welcome-day-1.md src/welcome-day-1-afternoon.md src/welcome-day-2.md -#: src/welcome-day-2-afternoon.md src/welcome-day-3.md -#: src/welcome-day-3-afternoon.md src/welcome-day-4.md -#: src/welcome-day-4-afternoon.md src/concurrency/welcome.md -#: src/concurrency/welcome-async.md -msgid "{{%session outline}}" +#: src/welcome-day-1.md:14 +msgid "" +"Including 10 minute breaks, this session should take about 2 hours and 5 " +"minutes. It contains:" msgstr "" +"Враховуючи 10-хвилинні перерви, ця сесія триватиме приблизно 2 години та 5 " +"хвилин. Вона містить:" -#: src/welcome-day-1.md +#: src/welcome-day-1.md:27 msgid "Please remind the students that:" msgstr "Будь ласка, нагадайте учням, що:" -#: src/welcome-day-1.md +#: src/welcome-day-1.md:29 msgid "" "They should ask questions when they get them, don't save them to the end." msgstr "" "Вони повинні задавати питання, коли вони їх мають, а не зберігати їх до " "кінця." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:30 msgid "" "The class is meant to be interactive and discussions are very much " "encouraged!" msgstr "Клас має на меті бути інтерактивним, тому дискусії дуже заохочуються!" -#: src/welcome-day-1.md +#: src/welcome-day-1.md:31 msgid "" "As an instructor, you should try to keep the discussions relevant, i.e., " "keep the discussions related to how Rust does things vs some other language. " @@ -2465,14 +2796,14 @@ msgstr "" "дозволити дискусії, оскільки вони залучають людей набагато більше, ніж " "одностороннє спілкування." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:35 msgid "" "The questions will likely mean that we talk about things ahead of the slides." msgstr "" "Запитання, швидше за все, означатимуть, що ми обговорюємо речі, які " "випереджають слайди." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:36 msgid "" "This is perfectly okay! Repetition is an important part of learning. " "Remember that the slides are just a support and you are free to skip them as " @@ -2481,7 +2812,7 @@ msgstr "" "Це цілком нормально! Повторення є важливою частиною навчання. Пам’ятайте, що " "слайди є лише підтримкою, і ви можете пропускати їх, якщо забажаєте." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:40 msgid "" "The idea for the first day is to show the \"basic\" things in Rust that " "should have immediate parallels in other languages. The more advanced parts " @@ -2491,7 +2822,7 @@ msgstr "" "повинні мати безпосередні паралелі в інших мовах. Більш просунуті частини " "Rust будуть розглянуті в наступні дні." -#: src/welcome-day-1.md +#: src/welcome-day-1.md:44 msgid "" "If you're teaching this in a classroom, this is a good place to go over the " "schedule. Note that there is an exercise at the end of each segment, " @@ -2505,36 +2836,48 @@ msgstr "" "вказаний тут, є рекомендацією для того, щоб тримати курс за розкладом. Не " "соромтеся бути гнучкими і вносити корективи за потреби!" -#: src/hello-world.md src/types-and-values.md src/control-flow-basics.md -#: src/tuples-and-arrays.md src/references.md src/user-defined-types.md -#: src/pattern-matching.md src/methods-and-traits.md src/generics.md -#: src/std-types.md src/std-traits.md src/memory-management.md -#: src/smart-pointers.md src/borrowing.md src/lifetimes.md src/iterators.md -#: src/modules.md src/testing.md src/error-handling.md src/unsafe-rust.md -#: src/concurrency/threads.md src/concurrency/channels.md -#: src/concurrency/send-sync.md src/concurrency/shared-state.md -#: src/concurrency/sync-exercises.md src/concurrency/async.md -#: src/concurrency/async-control-flow.md src/concurrency/async-pitfalls.md -#: src/concurrency/async-exercises.md -msgid "{{%segment outline}}" -msgstr "{{%segment outline}}" - -#: src/hello-world/what-is-rust.md:2 src/references/shared.md:2 -#: src/references/exclusive.md:2 src/references/slices.md:2 -#: src/references/strings.md:2 src/user-defined-types/named-structs.md:2 -#: src/user-defined-types/tuple-structs.md:2 src/pattern-matching/match.md:2 -#: src/pattern-matching/let-control-flow.md:2 src/generics/generic-data.md:2 -#: src/generics/exercise.md:2 src/std-types/option.md:2 -#: src/std-traits/closures.md:2 src/memory-management/approaches.md:2 -#: src/smart-pointers/trait-objects.md:2 src/borrowing/shared.md:2 -#: src/borrowing/borrowck.md:2 src/borrowing/interior-mutability.md:2 -#: src/lifetimes/lifetime-annotations.md:2 src/unsafe-rust/dereferencing.md:2 -#: src/concurrency/async/runtimes.md:2 -#: src/concurrency/async-pitfalls/blocking-executor.md:2 -msgid "minutes: 10" -msgstr "хвилин: 10" - -#: src/hello-world/what-is-rust.md:7 +#: src/hello-world.md:3 src/concurrency/send-sync.md:3 +msgid "This segment should take about 15 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 15 хвилин. Він містить:" + +#: src/hello-world.md:5 src/types-and-values.md:5 src/control-flow-basics.md:5 +#: src/tuples-and-arrays.md:5 src/references.md:5 src/user-defined-types.md:5 +#: src/pattern-matching.md:5 src/methods-and-traits.md:5 src/generics.md:5 +#: src/std-types.md:5 src/std-traits.md:5 src/memory-management.md:5 +#: src/smart-pointers.md:5 src/borrowing.md:5 src/lifetimes.md:5 +#: src/iterators.md:5 src/modules.md:5 src/testing.md:5 src/error-handling.md:5 +#: src/unsafe-rust.md:5 src/concurrency/threads.md:5 +#: src/concurrency/channels.md:5 src/concurrency/send-sync.md:5 +#: src/concurrency/shared-state.md:5 src/concurrency/sync-exercises.md:5 +#: src/concurrency/async.md:5 src/concurrency/async-control-flow.md:5 +#: src/concurrency/async-pitfalls.md:9 src/concurrency/async-exercises.md:5 +msgid "Slide" +msgstr "Слайд" + +#: src/hello-world.md:7 src/references.md:7 src/references.md:8 +#: src/references.md:9 src/references.md:10 src/user-defined-types.md:7 +#: src/user-defined-types.md:8 src/pattern-matching.md:7 +#: src/pattern-matching.md:10 src/methods-and-traits.md:7 src/generics.md:8 +#: src/generics.md:9 src/generics.md:12 src/std-types.md:9 src/std-traits.md:13 +#: src/memory-management.md:8 src/memory-management.md:13 +#: src/smart-pointers.md:7 src/smart-pointers.md:9 src/borrowing.md:7 +#: src/borrowing.md:8 src/borrowing.md:10 src/lifetimes.md:7 src/modules.md:10 +#: src/unsafe-rust.md:8 src/concurrency/channels.md:7 +#: src/concurrency/channels.md:9 src/concurrency/send-sync.md:10 +#: src/concurrency/shared-state.md:9 src/concurrency/async.md:7 +#: src/concurrency/async.md:9 src/concurrency/async.md:10 +#: src/concurrency/async-control-flow.md:7 src/concurrency/async-pitfalls.md:11 +msgid "10 minutes" +msgstr "10 хвилин" + +#: src/hello-world.md:9 src/control-flow-basics.md:12 +#: src/user-defined-types.md:11 src/memory-management.md:11 +#: src/concurrency/channels.md:8 src/concurrency/send-sync.md:7 +#: src/concurrency/send-sync.md:8 src/concurrency/send-sync.md:9 +msgid "2 minutes" +msgstr "2 хвилини" + +#: src/hello-world/what-is-rust.md:3 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):" @@ -2542,16 +2885,16 @@ msgstr "" "Rust — це нова мова програмування, яка мала [1.0 випуск у 2015 році](https://" "blog.rust-lang.org/2015/05/15/Rust-1.0.html):" -#: src/hello-world/what-is-rust.md:9 +#: src/hello-world/what-is-rust.md:5 msgid "Rust is a statically compiled language in a similar role as C++" msgstr "" "Rust — це статично скомпільована мова, яка виконує таку саму роль, як C++" -#: src/hello-world/what-is-rust.md:10 +#: src/hello-world/what-is-rust.md:6 msgid "`rustc` uses LLVM as its backend." msgstr "`rustc` використовує LLVM як бекенд." -#: src/hello-world/what-is-rust.md:11 +#: src/hello-world/what-is-rust.md:7 msgid "" "Rust supports many [platforms and architectures](https://doc.rust-lang.org/" "nightly/rustc/platform-support.html):" @@ -2559,77 +2902,69 @@ msgstr "" "Rust підтримує багато [платформ і архітектур](https://doc.rust-lang.org/" "nightly/rustc/platform-support.html):" -#: src/hello-world/what-is-rust.md:13 +#: src/hello-world/what-is-rust.md:9 msgid "x86, ARM, WebAssembly, ..." msgstr "x86, ARM, WebAssembly, ..." -#: src/hello-world/what-is-rust.md:14 +#: src/hello-world/what-is-rust.md:10 msgid "Linux, Mac, Windows, ..." msgstr "Linux, Mac, Windows, ..." -#: src/hello-world/what-is-rust.md:15 +#: src/hello-world/what-is-rust.md:11 msgid "Rust is used for a wide range of devices:" msgstr "Rust використовується для широкого спектру пристроїв:" -#: src/hello-world/what-is-rust.md:16 +#: src/hello-world/what-is-rust.md:12 msgid "firmware and boot loaders," msgstr "прошивки та завантажувачі," -#: src/hello-world/what-is-rust.md:17 +#: src/hello-world/what-is-rust.md:13 msgid "smart displays," msgstr "розумні дисплеї," -#: src/hello-world/what-is-rust.md:18 +#: src/hello-world/what-is-rust.md:14 msgid "mobile phones," msgstr "мобільні телефони," -#: src/hello-world/what-is-rust.md:19 +#: src/hello-world/what-is-rust.md:15 msgid "desktops," msgstr "робочі станції," -#: src/hello-world/what-is-rust.md:20 +#: src/hello-world/what-is-rust.md:16 msgid "servers." msgstr "сервери." -#: src/hello-world/what-is-rust.md:24 +#: src/hello-world/what-is-rust.md:21 msgid "Rust fits in the same area as C++:" msgstr "Rust вписується в ту ж саму область, що й C++:" -#: src/hello-world/what-is-rust.md:26 +#: src/hello-world/what-is-rust.md:23 msgid "High flexibility." msgstr "Висока гнучкість." -#: src/hello-world/what-is-rust.md:27 +#: src/hello-world/what-is-rust.md:24 msgid "High level of control." msgstr "Високий рівень контролю." -#: src/hello-world/what-is-rust.md:28 +#: src/hello-world/what-is-rust.md:25 msgid "" "Can be scaled down to very constrained devices such as microcontrollers." msgstr "" "Може бути зменьшений до дуже обмежених пристроїв, таких як мікроконтролери." -#: src/hello-world/what-is-rust.md:29 +#: src/hello-world/what-is-rust.md:26 msgid "Has no runtime or garbage collection." msgstr "Не має часу виконання або збирання сміття." -#: src/hello-world/what-is-rust.md:30 +#: src/hello-world/what-is-rust.md:27 msgid "Focuses on reliability and safety without sacrificing performance." msgstr "Зосереджений на надійності та безпеці без шкоди для продуктивності." -#: src/hello-world/benefits.md:2 src/types-and-values/arithmetic.md:2 -#: src/types-and-values/inference.md:2 src/control-flow-basics/functions.md:2 -#: src/tuples-and-arrays/iteration.md:2 src/methods-and-traits/deriving.md:2 -#: src/std-types/std.md:2 src/borrowing/examples.md:2 src/modules/modules.md:2 -#: src/testing/lints.md:2 src/error-handling/panics.md:2 -msgid "minutes: 3" -msgstr "хвилин: 3" - -#: src/hello-world/benefits.md:7 +#: src/hello-world/benefits.md:3 msgid "Some unique selling points of Rust:" msgstr "Деякі унікальні переваги Rust:" -#: src/hello-world/benefits.md:9 +#: src/hello-world/benefits.md:5 msgid "" "_Compile time memory safety_ - whole classes of memory bugs are prevented at " "compile time" @@ -2637,35 +2972,35 @@ msgstr "" "_Безпека пам'яті під час компіляції_ - цілі класи помилок пам'яті " "запобігаються на етапі компіляції" -#: src/hello-world/benefits.md:11 +#: src/hello-world/benefits.md:7 msgid "No uninitialized variables." msgstr "Немає неініціалізованих змінних." -#: src/hello-world/benefits.md:12 +#: src/hello-world/benefits.md:8 msgid "No double-frees." msgstr "Ніяких подвійних звільнень." -#: src/hello-world/benefits.md:13 +#: src/hello-world/benefits.md:9 msgid "No use-after-free." msgstr "Немає використання після звільнення." -#: src/hello-world/benefits.md:14 +#: src/hello-world/benefits.md:10 msgid "No `NULL` pointers." msgstr "Немає вказівників `NULL`." -#: src/hello-world/benefits.md:15 +#: src/hello-world/benefits.md:11 msgid "No forgotten locked mutexes." msgstr "Немає забутих заблокованих м'ютексів." -#: src/hello-world/benefits.md:16 +#: src/hello-world/benefits.md:12 msgid "No data races between threads." msgstr "Немає перегонів даних між потоками." -#: src/hello-world/benefits.md:17 +#: src/hello-world/benefits.md:13 msgid "No iterator invalidation." msgstr "Немає недійсності ітератора." -#: src/hello-world/benefits.md:19 +#: src/hello-world/benefits.md:15 msgid "" "_No undefined runtime behavior_ - what a Rust statement does is never left " "unspecified" @@ -2673,16 +3008,16 @@ msgstr "" "_Ніякої невизначеної поведінки під час виконання_ - те, що робить оператор " "Rust, ніколи не залишається невизначеним" -#: src/hello-world/benefits.md:21 +#: src/hello-world/benefits.md:17 msgid "Array access is bounds checked." msgstr "Доступ до масиву перевірено на межі." -#: src/hello-world/benefits.md:22 +#: src/hello-world/benefits.md:18 msgid "Integer overflow is defined (panic or wrap-around)." msgstr "" "Поведінка цілочисельного переповнення визначена (паніка або обертання)." -#: src/hello-world/benefits.md:24 +#: src/hello-world/benefits.md:20 msgid "" "_Modern language features_ - as expressive and ergonomic as higher-level " "languages" @@ -2690,39 +3025,39 @@ msgstr "" "_Можливості сучасної мови_ - така ж виразна та ергономічна, як і мови вищих " "рівнів" -#: src/hello-world/benefits.md:26 +#: src/hello-world/benefits.md:22 msgid "Enums and pattern matching." msgstr "Переліки та зіставлення шаблонів." -#: src/hello-world/benefits.md:27 +#: src/hello-world/benefits.md:23 msgid "Generics." msgstr "Узагальнені типи." -#: src/hello-world/benefits.md:28 +#: src/hello-world/benefits.md:24 msgid "No overhead FFI." msgstr "FFI без накладних витрат." -#: src/hello-world/benefits.md:29 +#: src/hello-world/benefits.md:25 msgid "Zero-cost abstractions." msgstr "Абстракції без витрат." -#: src/hello-world/benefits.md:30 +#: src/hello-world/benefits.md:26 msgid "Great compiler errors." msgstr "Чудово деталізовані помилки компілятора." -#: src/hello-world/benefits.md:31 +#: src/hello-world/benefits.md:27 msgid "Built-in dependency manager." msgstr "Вбудований менеджер залежностей." -#: src/hello-world/benefits.md:32 +#: src/hello-world/benefits.md:28 msgid "Built-in support for testing." msgstr "Вбудована підтримка тестування." -#: src/hello-world/benefits.md:33 +#: src/hello-world/benefits.md:29 msgid "Excellent Language Server Protocol support." msgstr "Чудова підтримка протоколу мовного сервера (LSP)." -#: src/hello-world/benefits.md:37 +#: src/hello-world/benefits.md:34 msgid "" "Do not spend much time here. All of these points will be covered in more " "depth later." @@ -2730,7 +3065,7 @@ msgstr "" "Не витрачайте тут багато часу. Всі ці пункти будуть розглянуті більш " "детально пізніше." -#: src/hello-world/benefits.md:40 +#: src/hello-world/benefits.md:37 msgid "" "Make sure to ask the class which languages they have experience with. " "Depending on the answer you can highlight different features of Rust:" @@ -2738,7 +3073,7 @@ msgstr "" "Обов’язково запитайте клас, з якими мовами вони мають досвід. Залежно від " "відповіді ви можете виділити різні особливості Rust:" -#: src/hello-world/benefits.md:43 +#: src/hello-world/benefits.md:40 msgid "" "Experience with C or C++: Rust eliminates a whole class of _runtime errors_ " "via the borrow checker. You get performance like in C and C++, but you don't " @@ -2751,7 +3086,7 @@ msgstr "" "сучасну мову з такими конструкціями, як зіставлення шаблонів і вбудоване " "керування залежностями." -#: src/hello-world/benefits.md:48 +#: src/hello-world/benefits.md:45 msgid "" "Experience with Java, Go, Python, JavaScript...: You get the same memory " "safety as in those languages, plus a similar high-level language feeling. In " @@ -2764,15 +3099,7 @@ msgstr "" "C++ (без збиральника сміття), а також доступ низького рівня до апаратного " "забезпечення (якщо воно вам знадобиться)" -#: src/hello-world/playground.md:2 src/control-flow-basics/macros.md:2 -#: src/user-defined-types/aliases.md:2 src/memory-management/clone.md:2 -#: src/concurrency/channels/unbounded.md:2 -#: src/concurrency/send-sync/marker-traits.md:2 -#: src/concurrency/send-sync/send.md:2 src/concurrency/send-sync/sync.md:2 -msgid "minutes: 2" -msgstr "хвилин: 2" - -#: src/hello-world/playground.md:7 +#: src/hello-world/playground.md:3 msgid "" "The [Rust Playground](https://play.rust-lang.org/) provides an easy way to " "run short Rust programs, and is the basis for the examples and exercises in " @@ -2784,7 +3111,7 @@ msgstr "" "курсі. Спробуйте запустити програму \"hello-world\", з якої він " "починається. Вона має декілька зручних можливостей:" -#: src/hello-world/playground.md:12 +#: src/hello-world/playground.md:8 msgid "" "Under \"Tools\", use the `rustfmt` option to format your code in the " "\"standard\" way." @@ -2792,7 +3119,7 @@ msgstr "" "У розділі \"Інструменти\" скористайтеся опцією `rustfmt` для форматування " "вашого коду у \"стандартний\" спосіб." -#: src/hello-world/playground.md:15 +#: src/hello-world/playground.md:11 msgid "" "Rust has two main \"profiles\" for generating code: Debug (extra runtime " "checks, less optimization) and Release (fewer runtime checks, lots of " @@ -2803,7 +3130,7 @@ msgstr "" "перевірок під час виконання, багато оптимізацій). Вони доступні у розділі " "\"Налагодження\" у верхній частині вікна." -#: src/hello-world/playground.md:19 +#: src/hello-world/playground.md:15 msgid "" "If you're interested, use \"ASM\" under \"...\" to see the generated " "assembly code." @@ -2811,7 +3138,7 @@ msgstr "" "Якщо вам цікаво, скористайтеся командою \"ASM\" в \"...\", щоб переглянути " "згенерований асемблерний код." -#: src/hello-world/playground.md:24 +#: src/hello-world/playground.md:21 msgid "" "As students head into the break, encourage them to open up the playground " "and experiment a little. Encourage them to keep the tab open and try things " @@ -2824,74 +3151,47 @@ msgstr "" "щось протягом решти курсу. Це особливо корисно для досвідчених студентів, " "які хочуть дізнатися більше про оптимізацію Rust або згенеровану збірку." -#: src/types-and-values/hello-world.md:2 src/types-and-values/variables.md:2 -#: src/types-and-values/values.md:2 src/control-flow-basics/loops.md:2 -#: src/control-flow-basics/blocks-and-scopes.md:2 -#: src/tuples-and-arrays/arrays.md:2 src/tuples-and-arrays/tuples.md:2 -#: src/tuples-and-arrays/destructuring.md:2 src/user-defined-types/enums.md:2 -#: src/user-defined-types/static.md:2 src/generics/generic-functions.md:2 -#: src/generics/impl-trait.md:2 src/generics/dyn-trait.md:2 -#: src/std-types/docs.md:2 src/std-types/result.md:2 src/std-types/string.md:2 -#: src/std-types/vec.md:2 src/std-types/hashmap.md:2 -#: src/std-traits/comparisons.md:2 src/std-traits/operators.md:2 -#: src/std-traits/from-and-into.md:2 src/std-traits/casting.md:2 -#: src/std-traits/read-and-write.md:2 src/std-traits/default.md:2 -#: src/memory-management/review.md:2 src/memory-management/ownership.md:2 -#: src/memory-management/move.md:2 src/memory-management/copy-types.md:2 -#: src/smart-pointers/rc.md:2 src/lifetimes/lifetime-elision.md:2 -#: src/lifetimes/struct-lifetimes.md:2 src/iterators/iterator.md:2 -#: src/iterators/intoiterator.md:2 src/iterators/fromiterator.md:2 -#: src/modules/filesystem.md:2 src/modules/visibility.md:2 -#: src/testing/unit-tests.md:2 src/testing/other.md:2 -#: src/error-handling/result.md:2 src/error-handling/try.md:2 -#: src/error-handling/try-conversions.md:2 src/error-handling/error.md:2 -#: src/error-handling/thiserror.md:2 src/error-handling/anyhow.md:2 -#: src/unsafe-rust/unsafe.md:2 src/unsafe-rust/mutable-static.md:2 -#: src/unsafe-rust/unions.md:2 src/unsafe-rust/unsafe-functions.md:2 -#: src/unsafe-rust/unsafe-traits.md:2 src/android/testing/googletest.md:2 -#: src/android/testing/mocking.md:2 src/concurrency/shared-state/arc.md:2 -#: src/concurrency/async-control-flow/select.md:2 -#: src/concurrency/async-pitfalls/async-traits.md:2 -msgid "minutes: 5" -msgstr "хвилин: 5" - -#: src/types-and-values/hello-world.md:7 +#: src/types-and-values.md:3 src/control-flow-basics.md:3 src/modules.md:3 +msgid "This segment should take about 40 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 40 хвилин. Він містить:" + +#: src/types-and-values/hello-world.md:3 msgid "" "Let us jump into the simplest possible Rust program, a classic Hello World " "program:" msgstr "" "Перейдемо до найпростішої програми Rust, класичної програми Hello World:" -#: src/types-and-values/hello-world.md:12 +#: src/types-and-values/hello-world.md:8 msgid "\"Hello 🌍!\"" msgstr "\"Привіт 🌍!\"" -#: src/types-and-values/hello-world.md:16 +#: src/types-and-values/hello-world.md:12 msgid "What you see:" msgstr "Що ви бачите:" -#: src/types-and-values/hello-world.md:18 +#: src/types-and-values/hello-world.md:14 msgid "Functions are introduced with `fn`." msgstr "Функції вводяться за допомогою `fn`." -#: src/types-and-values/hello-world.md:19 +#: src/types-and-values/hello-world.md:15 msgid "Blocks are delimited by curly braces like in C and C++." msgstr "Блоки розділені фігурними дужками, як у C і C++." -#: src/types-and-values/hello-world.md:20 +#: src/types-and-values/hello-world.md:16 msgid "The `main` function is the entry point of the program." msgstr "Функція `main` є точкою входу в програму." -#: src/types-and-values/hello-world.md:21 +#: src/types-and-values/hello-world.md:17 msgid "Rust has hygienic macros, `println!` is an example of this." msgstr "Rust має гігієнічні макроси, `println!` є прикладом цього." -#: src/types-and-values/hello-world.md:22 +#: src/types-and-values/hello-world.md:18 msgid "Rust strings are UTF-8 encoded and can contain any Unicode character." msgstr "" "Рядки в Rust мають кодування UTF-8 і можуть містити будь-які символи Unicode." -#: src/types-and-values/hello-world.md:26 +#: src/types-and-values/hello-world.md:23 msgid "" "This slide tries to make the students comfortable with Rust code. They will " "see a ton of it over the next four days so we start small with something " @@ -2901,7 +3201,7 @@ msgstr "" "Вони побачать масу цього протягом наступних чотирьох днів, тож ми починаємо " "з чогось малого та знайомого." -#: src/types-and-values/hello-world.md:31 +#: src/types-and-values/hello-world.md:28 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." @@ -2909,11 +3209,11 @@ msgstr "" "Rust дуже схожий на інші традиціїні мови як C/C++/Java. Це навмисно, і він " "не намагається винайти щось заново, якщо це не є абсолютно необхідним." -#: src/types-and-values/hello-world.md:34 +#: src/types-and-values/hello-world.md:31 msgid "Rust is modern with full support for things like Unicode." msgstr "Rust сучасний із повною підтримкою таких речей, як Unicode." -#: src/types-and-values/hello-world.md:36 +#: src/types-and-values/hello-world.md:33 msgid "" "Rust uses macros for situations where you want to have a variable number of " "arguments (no function [overloading](../control-flow-basics/functions.md))." @@ -2922,7 +3222,7 @@ msgstr "" "аргументів (немає [перевантаження](basic-syntax/functions-interlude.md) " "функцій)." -#: src/types-and-values/hello-world.md:39 +#: src/types-and-values/hello-world.md:36 msgid "" "Macros being 'hygienic' means they don't accidentally capture identifiers " "from the scope they are used in. Rust macros are actually only [partially " @@ -2934,7 +3234,7 @@ msgstr "" "насправді лише [частково гігієнічні](https://veykril.github.io/tlborm/decl-" "macros/minutiae/hygiene .html)." -#: src/types-and-values/hello-world.md:43 +#: src/types-and-values/hello-world.md:40 msgid "" "Rust is multi-paradigm. For example, it has powerful [object-oriented " "programming features](https://doc.rust-lang.org/book/ch17-00-oop.html), and, " @@ -2947,7 +3247,7 @@ msgstr "" "[функціональних понять](https://doc.rust-lang.org/book/ch13-00-functional-" "features.html)." -#: src/types-and-values/variables.md:7 +#: src/types-and-values/variables.md:3 msgid "" "Rust provides type safety via static typing. Variable bindings are made with " "`let`:" @@ -2955,12 +3255,12 @@ msgstr "" "Rust забезпечує безпеку типів за допомогою статичної типізації. Прив'язки " "змінних створюються за допомогою `let`:" -#: src/types-and-values/variables.md:13 src/control-flow-basics/loops/for.md:9 -#: src/control-flow-basics/blocks-and-scopes.md:21 +#: src/types-and-values/variables.md:9 src/control-flow-basics/loops/for.md:9 +#: src/control-flow-basics/blocks-and-scopes.md:17 msgid "\"x: {x}\"" msgstr "\"x: {x}\"" -#: src/types-and-values/variables.md:14 +#: src/types-and-values/variables.md:10 msgid "" "// x = 20;\n" " // println!(\"x: {x}\");\n" @@ -2968,7 +3268,7 @@ msgstr "" "// x = 20;\n" " // println!(\"x: {x}\");\n" -#: src/types-and-values/variables.md:21 +#: src/types-and-values/variables.md:18 msgid "" "Uncomment the `x = 20` to demonstrate that variables are immutable by " "default. Add the `mut` keyword to allow changes." @@ -2976,7 +3276,7 @@ msgstr "" "Відкоментуйте `x = 20`, щоб продемонструвати, що змінні за замовчуванням є " "незмінними. Додайте ключове слово `mut`, щоб дозволити зміну." -#: src/types-and-values/variables.md:24 +#: src/types-and-values/variables.md:21 msgid "" "The `i32` here is the type of the variable. This must be known at compile " "time, but type inference (covered later) allows the programmer to omit it in " @@ -2986,7 +3286,7 @@ msgstr "" "виведення типів (розглядається пізніше) дозволяє програмісту у багатьох " "випадках не вказувати його." -#: src/types-and-values/values.md:7 +#: src/types-and-values/values.md:3 msgid "" "Here are some basic built-in types, and the syntax for literal values of " "each type." @@ -2994,99 +3294,99 @@ msgstr "" "Нижче наведено деякі основні вбудовані типи та синтаксис для літеральних " "значень кожного типу." -#: src/types-and-values/values.md:10 src/unsafe-rust/exercise.md:20 +#: src/types-and-values/values.md:6 src/unsafe-rust/exercise.md:16 msgid "Types" msgstr "Типи" -#: src/types-and-values/values.md:10 +#: src/types-and-values/values.md:6 msgid "Literals" msgstr "Літерали" -#: src/types-and-values/values.md:12 +#: src/types-and-values/values.md:8 msgid "Signed integers" msgstr "Цілі числа зі знаком" -#: src/types-and-values/values.md:12 +#: src/types-and-values/values.md:8 msgid "`i8`, `i16`, `i32`, `i64`, `i128`, `isize`" msgstr "`i8`, `i16`, `i32`, `i64`, `i128`, `isize`" -#: src/types-and-values/values.md:12 +#: src/types-and-values/values.md:8 msgid "`-10`, `0`, `1_000`, `123_i64`" msgstr "`-10`, `0`, `1_000`, `123_i64`" -#: src/types-and-values/values.md:13 +#: src/types-and-values/values.md:9 msgid "Unsigned integers" msgstr "Беззнакові цілі числа" -#: src/types-and-values/values.md:13 +#: src/types-and-values/values.md:9 msgid "`u8`, `u16`, `u32`, `u64`, `u128`, `usize`" msgstr "`u8`, `u16`, `u32`, `u64`, `u128`, `usize`" -#: src/types-and-values/values.md:13 +#: src/types-and-values/values.md:9 msgid "`0`, `123`, `10_u16`" msgstr "`0`, `123`, `10_u16`" -#: src/types-and-values/values.md:14 +#: src/types-and-values/values.md:10 msgid "Floating point numbers" msgstr "Числа з плаваючою комою" -#: src/types-and-values/values.md:14 +#: src/types-and-values/values.md:10 msgid "`f32`, `f64`" msgstr "`f32`, `f64`" -#: src/types-and-values/values.md:14 +#: src/types-and-values/values.md:10 msgid "`3.14`, `-10.0e20`, `2_f32`" msgstr "`3.14`, `-10.0e20`, `2_f32`" -#: src/types-and-values/values.md:15 +#: src/types-and-values/values.md:11 msgid "Unicode scalar values" msgstr "Скалярні значення Unicode" -#: src/types-and-values/values.md:15 src/android/aidl/types/primitives.md:9 +#: src/types-and-values/values.md:11 src/android/aidl/types/primitives.md:9 msgid "`char`" msgstr "`char`" -#: src/types-and-values/values.md:15 +#: src/types-and-values/values.md:11 msgid "`'a'`, `'α'`, `'∞'`" msgstr "`'a'`, `'α'`, `'∞'`" -#: src/types-and-values/values.md:16 +#: src/types-and-values/values.md:12 msgid "Booleans" msgstr "Логічні значення" -#: src/types-and-values/values.md:16 src/android/aidl/types/primitives.md:7 +#: src/types-and-values/values.md:12 src/android/aidl/types/primitives.md:7 msgid "`bool`" msgstr "`bool`" -#: src/types-and-values/values.md:16 +#: src/types-and-values/values.md:12 msgid "`true`, `false`" msgstr "`true`, `false`" -#: src/types-and-values/values.md:18 +#: src/types-and-values/values.md:14 msgid "The types have widths as follows:" msgstr "Типи мають наступну ширину:" -#: src/types-and-values/values.md:20 +#: src/types-and-values/values.md:16 msgid "`iN`, `uN`, and `fN` are _N_ bits wide," msgstr "`iN`, `uN` і `fN` мають ширину _N_ біт," -#: src/types-and-values/values.md:21 +#: src/types-and-values/values.md:17 msgid "`isize` and `usize` are the width of a pointer," msgstr "`isize` і `usize` – це ширина вказівника," -#: src/types-and-values/values.md:22 +#: src/types-and-values/values.md:18 msgid "`char` is 32 bits wide," msgstr "`char` має ширину 32 біти," -#: src/types-and-values/values.md:23 +#: src/types-and-values/values.md:19 msgid "`bool` is 8 bits wide." msgstr "`bool` має ширину 8 біт." -#: src/types-and-values/values.md:27 +#: src/types-and-values/values.md:24 msgid "There are a few syntaxes which are not shown above:" msgstr "Є кілька синтаксисів, які не показано вище:" -#: src/types-and-values/values.md:29 +#: src/types-and-values/values.md:26 msgid "" "All underscores in numbers can be left out, they are for legibility only. So " "`1_000` can be written as `1000` (or `10_00`), and `123_i64` can be written " @@ -3096,11 +3396,11 @@ msgstr "" "розбірливості. Отже, `1_000` можна записати як `1000` (або `10_00`), а " "`123_i64` можна записати як `123i64`." -#: src/types-and-values/arithmetic.md:13 +#: src/types-and-values/arithmetic.md:9 msgid "\"result: {}\"" msgstr "\"результат: {}\"" -#: src/types-and-values/arithmetic.md:19 +#: src/types-and-values/arithmetic.md:16 msgid "" "This is the first time we've seen a function other than `main`, but the " "meaning should be clear: it takes three integers, and returns an integer. " @@ -3110,11 +3410,11 @@ msgstr "" "повинно бути зрозумілим: вона отримує три цілих числа і повертає ціле число. " "Функції буде розглянуто більш детально пізніше." -#: src/types-and-values/arithmetic.md:23 +#: src/types-and-values/arithmetic.md:20 msgid "Arithmetic is very similar to other languages, with similar precedence." msgstr "Арифметика дуже схожа на інші мови, зі схожими пріоритетами." -#: src/types-and-values/arithmetic.md:25 +#: src/types-and-values/arithmetic.md:22 msgid "" "What about integer overflow? In C and C++ overflow of _signed_ integers is " "actually undefined, and might do unknown things at runtime. In Rust, it's " @@ -3124,7 +3424,7 @@ msgstr "" "чисел _зі знаком_ фактично не визначено, і може робити невідомі речі під час " "виконання. У Rust воно визначене." -#: src/types-and-values/arithmetic.md:29 +#: src/types-and-values/arithmetic.md:26 msgid "" "Change the `i32`'s to `i16` to see an integer overflow, which panics " "(checked) in a debug build and wraps in a release build. There are other " @@ -3138,7 +3438,7 @@ msgstr "" "Доступ до них здійснюється за допомогою синтаксису методу, наприклад, `(a * " "b).saturating_add(b * c).saturating_add(c * a)`." -#: src/types-and-values/arithmetic.md:34 +#: src/types-and-values/arithmetic.md:31 msgid "" "In fact, the compiler will detect overflow of constant expressions, which is " "why the example requires a separate function." @@ -3146,11 +3446,11 @@ msgstr "" "Насправді, компілятор виявить переповнення константних виразів, тому приклад " "вимагає окремої функції." -#: src/types-and-values/inference.md:7 +#: src/types-and-values/inference.md:3 msgid "Rust will look at how the variable is _used_ to determine the type:" msgstr "Rust перевірить, як _використовується_ змінна для визначення типу:" -#: src/types-and-values/inference.md:32 +#: src/types-and-values/inference.md:29 msgid "" "This slide demonstrates how the Rust compiler infers types based on " "constraints given by variable declarations and usages." @@ -3158,7 +3458,7 @@ msgstr "" "На цьому слайді показано, як компілятор Rust виводить типи на основі " "обмежень, заданих оголошеннями змінних та їх використанням." -#: src/types-and-values/inference.md:35 +#: src/types-and-values/inference.md:32 msgid "" "It is very important to emphasize that variables declared like this are not " "of some sort of dynamic \"any type\" that can hold any data. The machine " @@ -3172,7 +3472,7 @@ msgstr "" "типу. Компілятор виконує роботу за нас і допомагає нам писати більш стислий " "код." -#: src/types-and-values/inference.md:40 +#: src/types-and-values/inference.md:37 msgid "" "When nothing constrains the type of an integer literal, Rust defaults to " "`i32`. This sometimes appears as `{integer}` in error messages. Similarly, " @@ -3183,18 +3483,11 @@ msgstr "" "`{integer}`. Подібно до цього, літерали з плаваючою комою за замовчуванням " "мають тип `f64`." -#: src/types-and-values/inference.md:49 +#: src/types-and-values/inference.md:46 msgid "// ERROR: no implementation for `{float} == {integer}`\n" msgstr "// ПОМИЛКА: немає реалізації для `{float} == {integer}`\n" -#: src/types-and-values/exercise.md:2 src/control-flow-basics/exercise.md:2 -#: src/tuples-and-arrays/exercise.md:2 src/references/exercise.md:2 -#: src/user-defined-types/exercise.md:2 src/methods-and-traits/traits.md:2 -#: src/modules/exercise.md:2 src/concurrency/threads/plain.md:2 -msgid "minutes: 15" -msgstr "хвилин: 15" - -#: src/types-and-values/exercise.md:7 +#: src/types-and-values/exercise.md:3 msgid "" "The Fibonacci sequence begins with `[0,1]`. For n>1, the n'th Fibonacci " "number is calculated recursively as the sum of the n-1'th and n-2'th " @@ -3203,7 +3496,7 @@ msgstr "" "Послідовність Фібоначчі починається з `[0,1]`. Для n>1 n-те число Фібоначчі " "обчислюється рекурсивно як сума n-1-го та n-2-го чисел Фібоначчі." -#: src/types-and-values/exercise.md:10 +#: src/types-and-values/exercise.md:6 msgid "" "Write a function `fib(n)` that calculates the n'th Fibonacci number. When " "will this function panic?" @@ -3211,36 +3504,42 @@ msgstr "" "Напишіть функцію `fib(n)`, яка обчислює n-те число Фібоначчі. Коли ця " "функція запанікує?" -#: src/types-and-values/exercise.md:16 +#: src/types-and-values/exercise.md:12 msgid "// The base case.\n" msgstr "// Базовий випадок.\n" -#: src/types-and-values/exercise.md:17 src/types-and-values/exercise.md:20 -#: src/control-flow-basics/exercise.md:31 +#: src/types-and-values/exercise.md:13 src/types-and-values/exercise.md:16 +#: src/control-flow-basics/exercise.md:27 msgid "\"Implement this\"" msgstr "\"Реалізуйте це\"" -#: src/types-and-values/exercise.md:19 +#: src/types-and-values/exercise.md:15 msgid "// The recursive case.\n" msgstr "// Рекурсивний випадок.\n" -#: src/types-and-values/exercise.md:26 src/types-and-values/solution.md:14 +#: src/types-and-values/exercise.md:22 src/types-and-values/solution.md:14 msgid "\"fib({n}) = {}\"" msgstr "\"fib({n}) = {}\"" -#: src/control-flow-basics/if.md:2 src/control-flow-basics/break-continue.md:2 -#: src/pattern-matching/destructuring-structs.md:2 -#: src/pattern-matching/destructuring-enums.md:2 -#: src/concurrency/async/futures.md:2 -#: src/concurrency/async-control-flow/join.md:2 -msgid "minutes: 4" -msgstr "хвилин: 4" +#: src/control-flow-basics.md:7 +msgid "if Expressions" +msgstr "Вирази if" + +#: src/control-flow-basics.md:7 src/control-flow-basics.md:9 +#: src/pattern-matching.md:8 src/pattern-matching.md:9 +#: src/concurrency/async.md:8 src/concurrency/async-control-flow.md:8 +msgid "4 minutes" +msgstr "4 хвилини" -#: src/control-flow-basics/if.md:5 +#: src/control-flow-basics.md:9 +msgid "break and continue" +msgstr "break та continue" + +#: src/control-flow-basics/if.md:1 msgid "`if` expressions" msgstr "Вирази `if`" -#: src/control-flow-basics/if.md:7 +#: src/control-flow-basics/if.md:3 msgid "" "You use [`if` expressions](https://doc.rust-lang.org/reference/expressions/" "if-expr.html#if-expressions) exactly like `if` statements in other languages:" @@ -3249,19 +3548,19 @@ msgstr "" "expressions/if-expr.html#if-expressions) так само, як і вирази `if` в інших " "мовах:" -#: src/control-flow-basics/if.md:15 +#: src/control-flow-basics/if.md:11 msgid "\"zero!\"" msgstr "\"нуль!\"" -#: src/control-flow-basics/if.md:17 +#: src/control-flow-basics/if.md:13 msgid "\"biggish\"" msgstr "\"великий\"" -#: src/control-flow-basics/if.md:19 +#: src/control-flow-basics/if.md:15 msgid "\"huge\"" msgstr "\"величезний\"" -#: src/control-flow-basics/if.md:24 +#: src/control-flow-basics/if.md:20 msgid "" "In addition, you can use `if` as an expression. The last expression of each " "block becomes the value of the `if` expression:" @@ -3269,19 +3568,19 @@ msgstr "" "Крім того, ви можете використовувати `if` як вираз. Останній вираз кожного " "блоку стає значенням виразу `if`:" -#: src/control-flow-basics/if.md:30 +#: src/control-flow-basics/if.md:26 msgid "\"small\"" msgstr "\"маленький\"" -#: src/control-flow-basics/if.md:30 +#: src/control-flow-basics/if.md:26 msgid "\"large\"" msgstr "\"великий\"" -#: src/control-flow-basics/if.md:31 +#: src/control-flow-basics/if.md:27 msgid "\"number size: {}\"" msgstr "\"розмір числа: {}\"" -#: src/control-flow-basics/if.md:37 +#: src/control-flow-basics/if.md:34 msgid "" "Because `if` is an expression and must have a particular type, both of its " "branch blocks must have the same type. Show what happens if you add `;` " @@ -3291,7 +3590,7 @@ msgstr "" "розгалужень повинні мати той самий тип. Покажіть, що станеться, якщо додати " "`;` після `\"маленький\"` у другому прикладі." -#: src/control-flow-basics/if.md:41 +#: src/control-flow-basics/if.md:38 msgid "" "An `if` expression should be used in the same way as the other expressions. " "For example, when it is used in a `let` statement, the statement must be " @@ -3303,15 +3602,15 @@ msgstr "" "символом `;`. Видаліть `;` перед `println!`, щоб побачити помилку " "компілятора." -#: src/control-flow-basics/loops.md:7 +#: src/control-flow-basics/loops.md:3 msgid "There are three looping keywords in Rust: `while`, `loop`, and `for`:" msgstr "У Rust є три ключові слова циклу: `while`, `loop` і `for`:" -#: src/control-flow-basics/loops.md:9 +#: src/control-flow-basics/loops.md:5 msgid "`while`" msgstr "`while`" -#: src/control-flow-basics/loops.md:11 +#: src/control-flow-basics/loops.md:7 msgid "" "The [`while` keyword](https://doc.rust-lang.org/reference/expressions/loop-" "expr.html#predicate-loops) works much like in other languages, executing the " @@ -3321,7 +3620,7 @@ msgstr "" "expr.html#predicate-loops) працює так само, як і в інших мовах, виконуючи " "тіло циклу доти, доки умова виконується." -#: src/control-flow-basics/loops.md:22 +#: src/control-flow-basics/loops.md:18 msgid "\"Final x: {x}\"" msgstr "\"Final x: {x}\"" @@ -3367,7 +3666,7 @@ msgstr "" msgid "\"{i}\"" msgstr "\"{i}\"" -#: src/control-flow-basics/break-continue.md:7 +#: src/control-flow-basics/break-continue.md:3 msgid "" "If you want to immediately start the next iteration use [`continue`](https://" "doc.rust-lang.org/reference/expressions/loop-expr.html#continue-expressions)." @@ -3376,7 +3675,7 @@ msgstr "" "(https://doc.rust-lang.org/reference/expressions/loop-expr.html#continue-" "expressions)." -#: src/control-flow-basics/break-continue.md:10 +#: src/control-flow-basics/break-continue.md:6 msgid "" "If you want to exit any kind of loop early, use [`break`](https://doc.rust-" "lang.org/reference/expressions/loop-expr.html#break-expressions). With " @@ -3388,17 +3687,17 @@ msgstr "" "html#break-expressions). З `loop` це може бути необов'язковий вираз, який " "стане значенням виразу `loop`." -#: src/control-flow-basics/break-continue.md:26 src/std-traits/exercise.md:27 -#: src/std-traits/solution.md:29 src/smart-pointers/trait-objects.md:98 -#: src/smart-pointers/trait-objects.md:99 -#: src/borrowing/interior-mutability.md:29 src/modules/exercise.md:140 +#: src/control-flow-basics/break-continue.md:22 src/std-traits/exercise.md:23 +#: src/std-traits/solution.md:29 src/smart-pointers/trait-objects.md:95 +#: src/smart-pointers/trait-objects.md:96 +#: src/borrowing/interior-mutability.md:25 src/modules/exercise.md:136 #: src/modules/solution.md:78 src/android/build-rules/library.md:44 #: src/android/interoperability/cpp/rust-bridge.md:17 -#: src/concurrency/async-pitfalls/cancellation.md:63 +#: src/concurrency/async-pitfalls/cancellation.md:59 msgid "\"{}\"" msgstr "\"{}\"" -#: src/control-flow-basics/break-continue.md:33 +#: src/control-flow-basics/break-continue.md:30 msgid "" "Note that `loop` is the only looping construct which can return a non-" "trivial value. This is because it's guaranteed to only return at a `break` " @@ -3431,11 +3730,11 @@ msgstr "Позначене переривання також працює на msgid "\"This line gets skipped\"" msgstr "\"Цей рядок пропускається\"" -#: src/control-flow-basics/blocks-and-scopes.md:7 +#: src/control-flow-basics/blocks-and-scopes.md:3 msgid "Blocks" msgstr "Блоки" -#: src/control-flow-basics/blocks-and-scopes.md:9 +#: src/control-flow-basics/blocks-and-scopes.md:5 msgid "" "A block in Rust contains a sequence of expressions, enclosed by braces `{}`. " "Each block has a value and a type, which are those of the last expression of " @@ -3445,11 +3744,11 @@ msgstr "" "Кожен блок має значення і тип, які відповідають значенню і типу останнього " "виразу в блоці:" -#: src/control-flow-basics/blocks-and-scopes.md:18 +#: src/control-flow-basics/blocks-and-scopes.md:14 msgid "\"y: {y}\"" msgstr "\"y: {y}\"" -#: src/control-flow-basics/blocks-and-scopes.md:25 +#: src/control-flow-basics/blocks-and-scopes.md:21 msgid "" "If the last expression ends with `;`, then the resulting value and type is " "`()`." @@ -3457,7 +3756,7 @@ msgstr "" "Якщо останній вираз закінчується символом `;`, то результуюче значення і тип " "буде `()`." -#: src/control-flow-basics/blocks-and-scopes.md:29 +#: src/control-flow-basics/blocks-and-scopes.md:26 msgid "" "You can show how the value of the block changes by changing the last line in " "the block. For instance, adding/removing a semicolon or using a `return`." @@ -3483,8 +3782,8 @@ msgid "\"before: {a}\"" msgstr "\"до: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md:13 -#: src/generics/exercise.md:22 src/generics/solution.md:20 -#: src/std-traits/from-and-into.md:12 src/std-traits/from-and-into.md:24 +#: src/generics/exercise.md:18 src/generics/solution.md:20 +#: src/std-traits/from-and-into.md:8 src/std-traits/from-and-into.md:20 msgid "\"hello\"" msgstr "\"привіт\"" @@ -3531,7 +3830,7 @@ msgstr "" "Затінення спочатку виглядає незрозумілим, але є зручним для збереження " "значень після `.unwrap()`." -#: src/control-flow-basics/functions.md:25 +#: src/control-flow-basics/functions.md:22 msgid "" "Declaration parameters are followed by a type (the reverse of some " "programming languages), then a return type." @@ -3539,7 +3838,7 @@ msgstr "" "Параметри оголошення супроводжуються типом (у зворотному порядку порівняно з " "деякими мовами програмування), а потім типом повернення." -#: src/control-flow-basics/functions.md:27 +#: src/control-flow-basics/functions.md:24 msgid "" "The last expression in a function body (or any block) becomes the return " "value. Simply omit the `;` at the end of the expression. The `return` " @@ -3552,7 +3851,7 @@ msgstr "" "значення\" є ідіоматичною у кінці функції (рефактор `gcd` щоб " "використовувати `return`)." -#: src/control-flow-basics/functions.md:31 +#: src/control-flow-basics/functions.md:28 msgid "" "Some functions have no return value, and return the 'unit type', `()`. The " "compiler will infer this if the return type is omitted." @@ -3560,12 +3859,12 @@ msgstr "" "Деякі функції не мають значення, що повертається, і повертають 'тип " "агрегату', `()`. Компілятор визначить це, якщо тип повернення пропущено." -#: src/control-flow-basics/functions.md:33 +#: src/control-flow-basics/functions.md:30 msgid "" "Overloading is not supported -- each function has a single implementation." msgstr "Перевантаження не підтримується - кожна функція має єдину реалізацію." -#: src/control-flow-basics/functions.md:34 +#: src/control-flow-basics/functions.md:31 msgid "" "Always takes a fixed number of parameters. Default arguments are not " "supported. Macros can be used to support variadic functions." @@ -3574,7 +3873,7 @@ msgstr "" "підтримуються. Для підтримки варіаційних функцій можна використовувати " "макроси." -#: src/control-flow-basics/functions.md:36 +#: src/control-flow-basics/functions.md:33 msgid "" "Always takes a single set of parameter types. These types can be generic, " "which will be covered later." @@ -3582,7 +3881,7 @@ msgstr "" "Завжди приймає єдиний набір типів параметрів. Ці типи можуть бути " "загальними, що буде розглянуто пізніше." -#: src/control-flow-basics/macros.md:7 +#: src/control-flow-basics/macros.md:3 msgid "" "Macros are expanded into Rust code during compilation, and can take a " "variable number of arguments. They are distinguished by a `!` at the end. " @@ -3592,7 +3891,7 @@ msgstr "" "кількість аргументів. Вони відрізняються символом `!` у кінці. До " "стандартної бібліотеки Rust входить набір корисних макросів." -#: src/control-flow-basics/macros.md:11 +#: src/control-flow-basics/macros.md:7 msgid "" "`println!(format, ..)` prints a line to standard output, applying formatting " "described in [`std::fmt`](https://doc.rust-lang.org/std/fmt/index.html)." @@ -3601,7 +3900,7 @@ msgstr "" "форматування, описане у [`std::fmt`](https://doc.rust-lang.org/std/fmt/index." "html)." -#: src/control-flow-basics/macros.md:13 +#: src/control-flow-basics/macros.md:9 msgid "" "`format!(format, ..)` works just like `println!` but returns the result as a " "string." @@ -3609,11 +3908,11 @@ msgstr "" "`format!(format, ..)` працює так само, як `println!`, але повертає результат " "у вигляді рядка." -#: src/control-flow-basics/macros.md:15 +#: src/control-flow-basics/macros.md:11 msgid "`dbg!(expression)` logs the value of the expression and returns it." msgstr "`dbg!(вираз)` записує значення виразу і повертає його." -#: src/control-flow-basics/macros.md:16 +#: src/control-flow-basics/macros.md:12 msgid "" "`todo!()` marks a bit of code as not-yet-implemented. If executed, it will " "panic." @@ -3621,7 +3920,7 @@ msgstr "" "`todo!()` позначає частину коду як таку, що ще не виконана. Якщо цей код " "буде виконано, він викличе паніку." -#: src/control-flow-basics/macros.md:18 +#: src/control-flow-basics/macros.md:14 msgid "" "`unreachable!()` marks a bit of code as unreachable. If executed, it will " "panic." @@ -3629,11 +3928,11 @@ msgstr "" "`unreachable!()` позначає ділянку коду як недосяжну. Якщо цей код буде " "виконано, він викличе паніку." -#: src/control-flow-basics/macros.md:36 +#: src/control-flow-basics/macros.md:32 msgid "\"{n}! = {}\"" msgstr "\"{n}! = {}\"" -#: src/control-flow-basics/macros.md:42 +#: src/control-flow-basics/macros.md:39 msgid "" "The takeaway from this section is that these common conveniences exist, and " "how to use them. Why they are defined as macros, and what they expand to, is " @@ -3643,7 +3942,7 @@ msgstr "" "те, як ними користуватися. Чому вони визначені як макроси і на що вони " "поширюються, не є особливо важливим." -#: src/control-flow-basics/macros.md:46 +#: src/control-flow-basics/macros.md:43 msgid "" "The course does not cover defining macros, but a later section will describe " "use of derive macros." @@ -3651,7 +3950,7 @@ msgstr "" "У цьому курсі не розглядається визначення макросів, але в наступному розділі " "буде описано використання похідних макросів." -#: src/control-flow-basics/exercise.md:7 +#: src/control-flow-basics/exercise.md:3 msgid "" "The [Collatz Sequence](https://en.wikipedia.org/wiki/Collatz_conjecture) is " "defined as follows, for an arbitrary n1 greater than zero:" @@ -3659,61 +3958,61 @@ msgstr "" "[Послідовність Коллатца](https://en.wikipedia.org/wiki/Collatz_conjecture) " "визначається наступним чином, для довільного n1 більшого за нуль:" -#: src/control-flow-basics/exercise.md:10 +#: src/control-flow-basics/exercise.md:6 msgid "" "If _ni_ is 1, then the sequence terminates at _ni_." msgstr "" "Якщо _ni_ є 1, то послідовність завершується при _ni_." -#: src/control-flow-basics/exercise.md:11 +#: src/control-flow-basics/exercise.md:7 msgid "If _ni_ is even, then _ni+1 = ni / 2_." msgstr "" "Якщо _ni_ є парним, то _ni+1 = ni / 2_." -#: src/control-flow-basics/exercise.md:12 +#: src/control-flow-basics/exercise.md:8 msgid "" "If _ni_ is odd, then _ni+1 = 3 * ni + 1_." msgstr "" "Якщо _ni_ є непарним, то _ni+1 = 3 * ni + " "1_." -#: src/control-flow-basics/exercise.md:14 +#: src/control-flow-basics/exercise.md:10 msgid "For example, beginning with _n1_ = 3:" msgstr "Наприклад, починаючи з _n1_ = 3:" -#: src/control-flow-basics/exercise.md:16 +#: src/control-flow-basics/exercise.md:12 msgid "3 is odd, so _n2_ = 3 * 3 + 1 = 10;" msgstr "3 є непарним, таким чином _n2_ = 3 * 3 + 1 = 10;" -#: src/control-flow-basics/exercise.md:17 +#: src/control-flow-basics/exercise.md:13 msgid "10 is even, so _n3_ = 10 / 2 = 5;" msgstr "10 є парним, таким чином _n3_ = 10 / 2 = 5;" -#: src/control-flow-basics/exercise.md:18 +#: src/control-flow-basics/exercise.md:14 msgid "5 is odd, so _n4_ = 3 * 5 + 1 = 16;" msgstr "5 є непарним, таким чином _n4_ = 3 * 5 + 1 = 16;" -#: src/control-flow-basics/exercise.md:19 +#: src/control-flow-basics/exercise.md:15 msgid "16 is even, so _n5_ = 16 / 2 = 8;" msgstr "16 є парним, таким чином _n5_ = 16 / 2 = 8;" -#: src/control-flow-basics/exercise.md:20 +#: src/control-flow-basics/exercise.md:16 msgid "8 is even, so _n6_ = 8 / 2 = 4;" msgstr "8 є парним, таким чином _n6_ = 8 / 2 = 4;" -#: src/control-flow-basics/exercise.md:21 +#: src/control-flow-basics/exercise.md:17 msgid "4 is even, so _n7_ = 4 / 2 = 2;" msgstr "4 є парним, таким чином _n7_ = 4 / 2 = 2;" -#: src/control-flow-basics/exercise.md:22 +#: src/control-flow-basics/exercise.md:18 msgid "2 is even, so _n8_ = 1; and" msgstr "2 є парним, таким чином _n8_ = 1; та" -#: src/control-flow-basics/exercise.md:23 +#: src/control-flow-basics/exercise.md:19 msgid "the sequence terminates." msgstr "послідовність завершується." -#: src/control-flow-basics/exercise.md:25 +#: src/control-flow-basics/exercise.md:21 msgid "" "Write a function to calculate the length of the collatz sequence for a given " "initial `n`." @@ -3721,26 +4020,34 @@ msgstr "" "Напишіть функцію, яка обчислює довжину коллатц-послідовності для заданого " "початкового `n`." -#: src/control-flow-basics/exercise.md:29 src/control-flow-basics/solution.md:4 +#: src/control-flow-basics/exercise.md:25 src/control-flow-basics/solution.md:4 msgid "/// Determine the length of the collatz sequence beginning at `n`.\n" msgstr "/// Визначте довжину послідовності колатів, яка починається з `n`.\n" -#: src/control-flow-basics/exercise.md:40 -#: src/control-flow-basics/solution.md:20 src/concurrency/threads/scoped.md:15 -#: src/concurrency/threads/scoped.md:34 +#: src/control-flow-basics/exercise.md:36 +#: src/control-flow-basics/solution.md:20 src/concurrency/threads/scoped.md:11 +#: src/concurrency/threads/scoped.md:29 msgid "\"Length: {}\"" msgstr "\"Довжина: {}\"" -#: src/welcome-day-1-afternoon.md -msgid "session: Day 1 Afternoon target_minutes: 180" -msgstr "session: Day 1 Afternoon target_minutes: 180" - -#: src/welcome-day-1-afternoon.md src/welcome-day-2-afternoon.md -#: src/welcome-day-3-afternoon.md src/welcome-day-4-afternoon.md +#: src/welcome-day-1-afternoon.md:1 src/welcome-day-2-afternoon.md:1 +#: src/welcome-day-3-afternoon.md:1 src/welcome-day-4-afternoon.md:1 msgid "Welcome Back" msgstr "Ласкаво просимо назад" -#: src/tuples-and-arrays/arrays.md:19 +#: src/welcome-day-1-afternoon.md:3 +msgid "" +"Including 10 minute breaks, this session should take about 2 hours and 35 " +"minutes. It contains:" +msgstr "" +"Враховуючи 10-хвилинні перерви, ця сесія триватиме приблизно 2 години 35 " +"хвилин. Віна містить:" + +#: src/tuples-and-arrays.md:3 +msgid "This segment should take about 35 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 35 хвилин. Він містить:" + +#: src/tuples-and-arrays/arrays.md:16 msgid "" "A value of the array type `[T; N]` holds `N` (a compile-time constant) " "elements of the same type `T`. Note that the length of the array is _part of " @@ -3754,7 +4061,7 @@ msgstr "" "різними типами. Зрізи, розмір яких визначається під час виконання, " "покриваються пізніше." -#: src/tuples-and-arrays/arrays.md:25 +#: src/tuples-and-arrays/arrays.md:22 msgid "" "Try accessing an out-of-bounds array element. Array accesses are checked at " "runtime. Rust can usually optimize these checks away, and they can be " @@ -3764,11 +4071,11 @@ msgstr "" "до масиву перевіряється під час виконання. Зазвичай Rust може оптимізувати " "ці перевірки, і їх можна уникнути, використовуючи небезпечний Rust." -#: src/tuples-and-arrays/arrays.md:29 +#: src/tuples-and-arrays/arrays.md:26 msgid "We can use literals to assign values to arrays." msgstr "Ми можемо використовувати літерали для присвоєння значень масивам." -#: src/tuples-and-arrays/arrays.md:31 +#: src/tuples-and-arrays/arrays.md:28 msgid "" "The `println!` macro asks for the debug implementation with the `?` format " "parameter: `{}` gives the default output, `{:?}` gives the debug output. " @@ -3782,7 +4089,7 @@ msgstr "" "замовчуванням, але масиви реалізують лише виведення для налагодження. Це " "означає, що тут ми повинні використовувати налагоджувальний вивід." -#: src/tuples-and-arrays/arrays.md:36 +#: src/tuples-and-arrays/arrays.md:33 msgid "" "Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be " "easier to read." @@ -3790,15 +4097,15 @@ msgstr "" "Додавання `#`, наприклад `{a:#?}`, викликає формат \"гарного друку\", який " "може бути легшим для читання." -#: src/tuples-and-arrays/tuples.md:19 +#: src/tuples-and-arrays/tuples.md:16 msgid "Like arrays, tuples have a fixed length." msgstr "Як і масиви, кортежі мають фіксовану довжину." -#: src/tuples-and-arrays/tuples.md:21 +#: src/tuples-and-arrays/tuples.md:18 msgid "Tuples group together values of different types into a compound type." msgstr "Кортежі групують значення різних типів у складений тип." -#: src/tuples-and-arrays/tuples.md:23 +#: src/tuples-and-arrays/tuples.md:20 msgid "" "Fields of a tuple can be accessed by the period and the index of the value, " "e.g. `t.0`, `t.1`." @@ -3806,7 +4113,7 @@ msgstr "" "Доступ до полів кортежу можна отримати після крапки з індексом значення, " "наприклад. `t.0`, `t.1`." -#: src/tuples-and-arrays/tuples.md:26 +#: src/tuples-and-arrays/tuples.md:23 msgid "" "The empty tuple `()` is referred to as the \"unit type\" and signifies " "absence of a return value, akin to `void` in other languages." @@ -3814,11 +4121,11 @@ msgstr "" "Порожній кортеж `()` називається \" типом одиниці\" і означає відсутність " "значення, що повертається, подібно до `void` в інших мовах." -#: src/tuples-and-arrays/iteration.md:7 +#: src/tuples-and-arrays/iteration.md:3 msgid "The `for` statement supports iterating over arrays (but not tuples)." msgstr "Оператор `for` підтримує ітерацію над масивами (але не кортежами)." -#: src/tuples-and-arrays/iteration.md:22 +#: src/tuples-and-arrays/iteration.md:19 msgid "" "This functionality uses the `IntoIterator` trait, but we haven't covered " "that yet." @@ -3826,7 +4133,7 @@ msgstr "" "Ця функціональність використовує трейт `IntoIterator`, але ми ще не " "розглядали його." -#: src/tuples-and-arrays/iteration.md:25 +#: src/tuples-and-arrays/iteration.md:22 msgid "" "The `assert_ne!` macro is new here. There are also `assert_eq!` and `assert!" "` macros. These are always checked, while debug-only variants like " @@ -3836,7 +4143,7 @@ msgstr "" "`. Вони завжди перевіряються, тоді як варіанти лише для налагодження, такі " "як `debug_assert!`, не компілюються у релізних збірках." -#: src/tuples-and-arrays/destructuring.md:7 +#: src/tuples-and-arrays/destructuring.md:3 msgid "" "When working with tuples and other structured values it's common to want to " "extract the inner values into local variables. This can be done manually by " @@ -3846,12 +4153,12 @@ msgstr "" "потреба витягти внутрішні значення у локальні змінні. Це можна зробити " "вручну шляхом прямого доступу до внутрішніх значень:" -#: src/tuples-and-arrays/destructuring.md:15 -#: src/tuples-and-arrays/destructuring.md:25 +#: src/tuples-and-arrays/destructuring.md:11 +#: src/tuples-and-arrays/destructuring.md:21 msgid "\"left: {left}, right: {right}\"" msgstr "\"left: {left}, right: {right}\"" -#: src/tuples-and-arrays/destructuring.md:19 +#: src/tuples-and-arrays/destructuring.md:15 msgid "" "However, Rust also supports using pattern matching to destructure a larger " "value into its constituent parts:" @@ -3859,7 +4166,7 @@ msgstr "" "Однак, Rust також підтримує використання зіставлення шаблонів для розбиття " "більшого значення на складові частини:" -#: src/tuples-and-arrays/destructuring.md:31 +#: src/tuples-and-arrays/destructuring.md:28 msgid "" "The patterns used here are \"irrefutable\", meaning that the compiler can " "statically verify that the value on the right of `=` has the same structure " @@ -3869,7 +4176,7 @@ msgstr "" "може статично перевірити, що значення праворуч від `=` має таку саму " "структуру, як і шаблон." -#: src/tuples-and-arrays/destructuring.md:34 +#: src/tuples-and-arrays/destructuring.md:31 msgid "" "A variable name is an irrefutable pattern that always matches any value, " "hence why we can also use `let` to declare a single variable." @@ -3878,7 +4185,7 @@ msgstr "" "значенню, тому ми також можемо використовувати `let` для оголошення однієї " "змінної." -#: src/tuples-and-arrays/destructuring.md:36 +#: src/tuples-and-arrays/destructuring.md:33 msgid "" "Rust also supports using patterns in conditionals, allowing for equality " "comparison and destructuring to happen at the same time. This form of " @@ -3888,7 +4195,7 @@ msgstr "" "виконувати порівняння на рівність і деструкцію одночасно. Ця форма " "порівняння шаблонів буде розглянута більш детально пізніше." -#: src/tuples-and-arrays/destructuring.md:39 +#: src/tuples-and-arrays/destructuring.md:36 msgid "" "Edit the examples above to show the compiler error when the pattern doesn't " "match the value being matched on." @@ -3896,15 +4203,15 @@ msgstr "" "Відредагуйте приклади вище, щоб показати помилку компілятора, коли шаблон не " "збігається зі значенням, що порівнюється." -#: src/tuples-and-arrays/exercise.md:7 +#: src/tuples-and-arrays/exercise.md:3 msgid "Arrays can contain other arrays:" msgstr "Масиви можуть містити інші масиви:" -#: src/tuples-and-arrays/exercise.md:13 +#: src/tuples-and-arrays/exercise.md:9 msgid "What is the type of this variable?" msgstr "Який тип цієї змінної?" -#: src/tuples-and-arrays/exercise.md:15 +#: src/tuples-and-arrays/exercise.md:11 msgid "" "Use an array such as the above to write a function `transpose` which will " "transpose a matrix (turn rows into columns):" @@ -3912,7 +4219,7 @@ msgstr "" "Використовуйте масив, подібний до наведеного вище, для написання функції " "`transpose`, яка транспонує матрицю (перетворює рядки у стовпці):" -#: src/tuples-and-arrays/exercise.md:26 +#: src/tuples-and-arrays/exercise.md:22 msgid "" "Copy the code below to and implement the " "function. This function only operates on 3x3 matrices." @@ -3920,29 +4227,34 @@ msgstr "" "Скопіюйте наведений нижче код на і реалізуйте " "функцію. Ця функція працює лише з матрицями 3x3." -#: src/tuples-and-arrays/exercise.md:30 src/borrowing/exercise.md:18 -#: src/unsafe-rust/exercise.md:55 +#: src/tuples-and-arrays/exercise.md:26 src/borrowing/exercise.md:14 +#: src/unsafe-rust/exercise.md:51 msgid "// TODO: remove this when you're done with your implementation.\n" msgstr "// TODO: видаліть це, коли закінчите реалізацію.\n" -#: src/tuples-and-arrays/exercise.md:40 src/tuples-and-arrays/exercise.md:48 +#: src/tuples-and-arrays/exercise.md:36 src/tuples-and-arrays/exercise.md:44 #: src/tuples-and-arrays/solution.md:17 src/tuples-and-arrays/solution.md:25 msgid "//\n" msgstr "//\n" -#: src/tuples-and-arrays/exercise.md:57 src/tuples-and-arrays/solution.md:34 +#: src/tuples-and-arrays/exercise.md:53 src/tuples-and-arrays/solution.md:34 msgid "// <-- the comment makes rustfmt add a newline\n" msgstr "// <-- коментар змушує rustfmt додати новий рядок\n" -#: src/tuples-and-arrays/exercise.md:62 src/tuples-and-arrays/solution.md:39 +#: src/tuples-and-arrays/exercise.md:58 src/tuples-and-arrays/solution.md:39 msgid "\"matrix: {:#?}\"" msgstr "\"матриця: {:#?}\"" -#: src/tuples-and-arrays/exercise.md:64 src/tuples-and-arrays/solution.md:41 +#: src/tuples-and-arrays/exercise.md:60 src/tuples-and-arrays/solution.md:41 msgid "\"transposed: {:#?}\"" msgstr "\"транспонована: {:#?}\"" -#: src/references/shared.md:7 +#: src/references.md:3 src/smart-pointers.md:3 src/borrowing.md:3 +#: src/concurrency/async-pitfalls.md:7 +msgid "This segment should take about 55 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 55 хвилин. Він містить:" + +#: src/references/shared.md:3 msgid "" "A reference provides a way to access another value without taking ownership " "of the value, and is also called \"borrowing\". Shared references are read-" @@ -3952,7 +4264,7 @@ msgstr "" "на нього, і також називається \"запозиченням\". Спільні посилання доступні " "лише для читання, і дані, на які вони посилаються, не можуть бути змінені." -#: src/references/shared.md:24 +#: src/references/shared.md:20 msgid "" "A shared reference to a type `T` has type `&T`. A reference value is made " "with the `&` operator. The `*` operator \"dereferences\" a reference, " @@ -3962,18 +4274,18 @@ msgstr "" "допомогою оператора `&`. Оператор `*` \"розіменовує\" посилання, повертаючи " "його значення." -#: src/references/shared.md:28 +#: src/references/shared.md:24 msgid "Rust will statically forbid dangling references:" msgstr "Rust статично забороняє висячі посилання:" -#: src/references/shared.md:41 +#: src/references/shared.md:38 msgid "" "References can never be null in Rust, so null checking is not necessary." msgstr "" "Посилання ніколи не можуть бути null у Rust, тому перевірка на null не є " "обов'язковою." -#: src/references/shared.md:43 +#: src/references/shared.md:40 msgid "" "A reference is said to \"borrow\" the value it refers to, and this is a good " "model for students not familiar with pointers: code can use the reference to " @@ -3986,7 +4298,7 @@ msgstr "" "\"власністю\" вихідної змінної. Більш детально про володіння буде розглянуто " "на третьому дні курсу." -#: src/references/shared.md:48 +#: src/references/shared.md:45 msgid "" "References are implemented as pointers, and a key advantage is that they can " "be much smaller than the thing they point to. Students familiar with C or C+" @@ -4000,14 +4312,14 @@ msgstr "" "частинах курсу буде розглянуто, як Rust запобігає помилкам, пов'язаним з " "безпекою пам'яті, які виникають при використанні сирих вказівників." -#: src/references/shared.md:53 +#: src/references/shared.md:50 msgid "" "Rust does not automatically create references for you - the `&` is always " "required." msgstr "" "Rust не створює посилання автоматично - завжди потрібно використовувати `&`." -#: src/references/shared.md:56 +#: src/references/shared.md:53 msgid "" "Rust will auto-dereference in some cases, in particular when invoking " "methods (try `r.is_ascii()`). There is no need for an `->` operator like in C" @@ -4017,7 +4329,7 @@ msgstr "" "виклику методів (спробуйте `r.is_ascii()`). Тут не потрібен оператор `->`, " "як у C++." -#: src/references/shared.md:59 +#: src/references/shared.md:56 msgid "" "In this example, `r` is mutable so that it can be reassigned (`r = &b`). " "Note that this re-binds `r`, so that it refers to something else. This is " @@ -4029,7 +4341,7 @@ msgstr "" "щось інше. Це відрізняється від C++, де присвоювання посилання змінює " "значення, на яке воно посилається." -#: src/references/shared.md:63 +#: src/references/shared.md:60 msgid "" "A shared reference does not allow modifying the value it refers to, even if " "that value was mutable. Try `*r = 'X'`." @@ -4037,7 +4349,7 @@ msgstr "" "Спільне посилання не дозволяє змінювати значення, на яке воно посилається, " "навіть якщо це значення було змінним. Спробуйте `*r = 'X'`." -#: src/references/shared.md:66 +#: src/references/shared.md:63 msgid "" "Rust is tracking the lifetimes of all references to ensure they live long " "enough. Dangling references cannot occur in safe Rust. `x_axis` would return " @@ -4049,11 +4361,11 @@ msgstr "" "Функція `x_axis` поверне посилання на `point`, але `point` буде звільнено, " "коли функція повернеться, тому це не буде скомпільовано." -#: src/references/shared.md:71 +#: src/references/shared.md:68 msgid "We will talk more about borrowing when we get to ownership." msgstr "Про запозичення ми поговоримо більше, коли дійдемо до володіння." -#: src/references/exclusive.md:7 +#: src/references/exclusive.md:3 msgid "" "Exclusive references, also known as mutable references, allow changing the " "value they refer to. They have type `&mut T`." @@ -4061,7 +4373,7 @@ msgstr "" "Ексклюзивні посилання, також відомі як мутабельні посилання, дозволяють " "змінювати значення, на яке вони посилаються. Вони мають тип `&mut T`." -#: src/references/exclusive.md:25 +#: src/references/exclusive.md:22 msgid "" "\"Exclusive\" means that only this reference can be used to access the " "value. No other references (shared or exclusive) can exist at the same time, " @@ -4075,7 +4387,7 @@ msgstr "" "отримати доступ, поки існує ексклюзивне посилання. Спробуйте створити " "`&point.0` або змінити `point.0`, поки існує `x_coord`." -#: src/references/exclusive.md:30 +#: src/references/exclusive.md:27 msgid "" "Be sure to note the difference between `let mut x_coord: &i32` and `let " "x_coord: &mut i32`. The first one represents a shared reference which can be " @@ -4087,15 +4399,15 @@ msgstr "" "прив'язати до різних значень, тоді як другий представляє ексклюзивне " "посилання на значення, що змінюється." -#: src/references/slices.md:7 +#: src/references/slices.md:3 msgid "A slice gives you a view into a larger collection:" msgstr "Зріз дає змогу поглянути на більшу колекцію:" -#: src/references/slices.md:22 +#: src/references/slices.md:18 msgid "Slices borrow data from the sliced type." msgstr "Зрізи запозичують дані зі зрізаного типу." -#: src/references/slices.md:26 +#: src/references/slices.md:23 msgid "" "We create a slice by borrowing `a` and specifying the starting and ending " "indexes in brackets." @@ -4103,7 +4415,7 @@ msgstr "" "Ми створюємо зріз, запозичуючи `a` та вказуючи початковий і кінцевий індекси " "в дужках." -#: src/references/slices.md:29 +#: src/references/slices.md:26 msgid "" "If the slice starts at index 0, Rust’s range syntax allows us to drop the " "starting index, meaning that `&a[0..a.len()]` and `&a[..a.len()]` are " @@ -4113,7 +4425,7 @@ msgstr "" "відкинути початковий індекс, тобто `&a[0..a.len()]` і `&a[..a.len()]` " "ідентичні." -#: src/references/slices.md:33 +#: src/references/slices.md:30 msgid "" "The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are " "identical." @@ -4121,13 +4433,13 @@ msgstr "" "Теж саме стосується останнього індексу, тому `&a[2..a.len()]` і `&a[2..]` " "ідентичні." -#: src/references/slices.md:36 +#: src/references/slices.md:33 msgid "" "To easily create a slice of the full array, we can therefore use `&a[..]`." msgstr "" "Щоб легко створити повний зріз масиву, ми можемо використовувати `&a[..]`." -#: src/references/slices.md:38 +#: src/references/slices.md:35 msgid "" "`s` is a reference to a slice of `i32`s. Notice that the type of `s` " "(`&[i32]`) no longer mentions the array length. This allows us to perform " @@ -4137,7 +4449,7 @@ msgstr "" "не згадує довжину масиву. Це дозволяє нам виконувати обчислення на зрізах " "різного розміру." -#: src/references/slices.md:42 +#: src/references/slices.md:39 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." @@ -4146,41 +4458,41 @@ msgstr "" "залишатися 'живим' (в області застосування) принаймні стільки ж, скільки і " "наш зріз." -#: src/references/strings.md:11 +#: src/references/strings.md:7 msgid "We can now understand the two string types in Rust:" msgstr "Тепер ми можемо зрозуміти два типи рядків у Rust:" -#: src/references/strings.md:13 +#: src/references/strings.md:9 msgid "`&str` is a slice of UTF-8 encoded bytes, similar to `&[u8]`." msgstr "" -#: src/references/strings.md:14 +#: src/references/strings.md:10 msgid "" "`String` is an owned buffer of UTF-8 encoded bytes, similar to `Vec`." msgstr "" -#: src/references/strings.md:21 src/std-traits/read-and-write.md:40 +#: src/references/strings.md:17 src/std-traits/read-and-write.md:36 msgid "\"World\"" msgstr "\"Світ\"" -#: src/references/strings.md:22 +#: src/references/strings.md:18 msgid "\"s1: {s1}\"" msgstr "\"s1: {s1}\"" -#: src/references/strings.md:24 +#: src/references/strings.md:20 msgid "\"Hello \"" msgstr "\"Привіт \"" -#: src/references/strings.md:25 src/references/strings.md:27 -#: src/memory-management/move.md:13 +#: src/references/strings.md:21 src/references/strings.md:23 +#: src/memory-management/move.md:9 msgid "\"s2: {s2}\"" msgstr "\"s2: {s2}\"" -#: src/references/strings.md:30 +#: src/references/strings.md:26 msgid "\"s3: {s3}\"" msgstr "\"s3: {s3}\"" -#: src/references/strings.md:36 +#: src/references/strings.md:33 msgid "" "`&str` introduces a string slice, which is an immutable reference to UTF-8 " "encoded string data stored in a block of memory. String literals (`\"Hello" @@ -4190,7 +4502,7 @@ msgstr "" "кодуванні UTF-8, що зберігаються в блоці пам’яті. Рядкові літерали (`\"Hello" "\"`) зберігаються у бінарному файлі програми." -#: src/references/strings.md:40 +#: src/references/strings.md:37 msgid "" "Rust's `String` type is a wrapper around a vector of bytes. As with a " "`Vec`, it is owned." @@ -4198,7 +4510,7 @@ msgstr "" "Тип `String` в Rust — це оболонка навколо вектора байтів. Як і у випадку з " "`Vec`, він знаходиться у володінні." -#: src/references/strings.md:43 +#: src/references/strings.md:40 msgid "" "As with many other types `String::from()` creates a string from a string " "literal; `String::new()` creates a new empty string, to which string data " @@ -4208,7 +4520,7 @@ msgstr "" "літералу; `String::new()` створює новий порожній рядок, до якого дані рядка " "можна додати за допомогою методів `push()` і `push_str()`." -#: src/references/strings.md:47 +#: src/references/strings.md:44 msgid "" "The `format!()` macro is a convenient way to generate an owned string from " "dynamic values. It accepts the same format specification as `println!()`." @@ -4217,7 +4529,7 @@ msgstr "" "динамічних значень. Він приймає таку саму специфікацію формату, як і " "`println!()`." -#: src/references/strings.md:50 +#: src/references/strings.md:47 msgid "" "You can borrow `&str` slices from `String` via `&` and optionally range " "selection. If you select a byte range that is not aligned to character " @@ -4229,7 +4541,7 @@ msgstr "" "вирівняно за межами символів, вираз запанікує. Ітератор `chars` перебирає " "символи, і йому надається перевага перед спробами вирівняти межі символів." -#: src/references/strings.md:55 +#: src/references/strings.md:52 msgid "" "For C++ programmers: think of `&str` as `std::string_view` from C++, but the " "one that always points to a valid string in memory. Rust `String` is a rough " @@ -4242,13 +4554,13 @@ msgstr "" "містити лише байти у кодуванні UTF-8 і ніколи не використовує оптимізацію " "малих рядків).." -#: src/references/strings.md:60 +#: src/references/strings.md:57 msgid "Byte strings literals allow you to create a `&[u8]` value directly:" msgstr "" "Літерали байтових рядків дозволяють створювати значення `&[u8]` " "безпосередньо:" -#: src/references/strings.md:70 +#: src/references/strings.md:67 msgid "" "Raw strings allow you to create a `&str` value with escapes disabled: `r\"\\n" "\" == \"\\\\n\"`. You can embed double-quotes by using an equal amount of " @@ -4258,7 +4570,7 @@ msgstr "" "екрануванням: `r\"\\n\" == \"\\\\n\"`. Ви можете вставити подвійні лапки, " "використовуючи однакову кількість `#` з обох боків лапок:" -#: src/references/exercise.md:7 +#: src/references/exercise.md:3 msgid "" "We will create a few utility functions for 3-dimensional geometry, " "representing a point as `[f64;3]`. It is up to you to determine the function " @@ -4267,7 +4579,7 @@ msgstr "" "Ми створимо декілька утиліт для тривимірної геометрії, що представляють " "точку у вигляді `[f64;3]`. Ви самі визначаєте сигнатури функцій." -#: src/references/exercise.md:11 +#: src/references/exercise.md:7 msgid "" "// Calculate the magnitude of a vector by summing the squares of its " "coordinates\n" @@ -4280,7 +4592,7 @@ msgstr "" "обчислення квадратного\n" "// кореня, наприклад `v.sqrt()`.\n" -#: src/references/exercise.md:19 +#: src/references/exercise.md:15 msgid "" "// Normalize a vector by calculating its magnitude and dividing all of its\n" "// coordinates by that magnitude.\n" @@ -4288,19 +4600,19 @@ msgstr "" "// Нормалізуйте вектор, обчисливши його величину і поділивши всі його\n" "// координати на цю величину.\n" -#: src/references/exercise.md:27 +#: src/references/exercise.md:23 msgid "// Use the following `main` to test your work.\n" msgstr "Використовуйте наступний `main` для тестування вашої роботи.\n" -#: src/references/exercise.md:31 src/references/solution.md:22 +#: src/references/exercise.md:27 src/references/solution.md:22 msgid "\"Magnitude of a unit vector: {}\"" msgstr "\"Величина одиничного вектора: {}\"" -#: src/references/exercise.md:34 src/references/solution.md:25 +#: src/references/exercise.md:30 src/references/solution.md:25 msgid "\"Magnitude of {v:?}: {}\"" msgstr "\"Величина {v:?}: {}\"" -#: src/references/exercise.md:36 src/references/solution.md:27 +#: src/references/exercise.md:32 src/references/solution.md:27 msgid "\"Magnitude of {v:?} after normalization: {}\"" msgstr "\"Величина {v:?} після нормалізації: {}\"" @@ -4314,47 +4626,51 @@ msgid "" "direction.\n" msgstr "/// Змініть величину вектора на 1.0, не змінюючи його напрямок.\n" -#: src/user-defined-types/named-structs.md:7 +#: src/user-defined-types.md:3 src/methods-and-traits.md:3 src/lifetimes.md:3 +msgid "This segment should take about 50 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 50 хвилин. Він містить:" + +#: src/user-defined-types/named-structs.md:3 msgid "Like C and C++, Rust has support for custom structs:" msgstr "Подібно до C і C++, Rust підтримує користувальницькі структури:" -#: src/user-defined-types/named-structs.md:16 +#: src/user-defined-types/named-structs.md:12 msgid "\"{} is {} years old\"" msgstr "\"{} віком {} років\"" -#: src/user-defined-types/named-structs.md:20 +#: src/user-defined-types/named-structs.md:16 #: src/android/interoperability/with-c/bindgen.md:87 msgid "\"Peter\"" msgstr "\"Peter\"" -#: src/user-defined-types/named-structs.md:26 +#: src/user-defined-types/named-structs.md:22 msgid "\"Avery\"" msgstr "\"Avery\"" -#: src/user-defined-types/named-structs.md:31 +#: src/user-defined-types/named-structs.md:27 msgid "\"Jackie\"" msgstr "\"Jackie\"" -#: src/user-defined-types/named-structs.md:38 -#: src/user-defined-types/enums.md:32 src/pattern-matching/match.md:41 -#: src/methods-and-traits/methods.md:72 +#: src/user-defined-types/named-structs.md:35 +#: src/user-defined-types/enums.md:29 src/pattern-matching/match.md:38 +#: src/methods-and-traits/methods.md:69 msgid "Key Points:" msgstr "Ключові моменти:" -#: src/user-defined-types/named-structs.md:40 +#: src/user-defined-types/named-structs.md:37 msgid "Structs work like in C or C++." msgstr "Структури працюють як у C або C++." -#: src/user-defined-types/named-structs.md:41 +#: src/user-defined-types/named-structs.md:38 msgid "Like in C++, and unlike in C, no typedef is needed to define a type." msgstr "" "Як і в C++, і на відміну від C, для визначення типу не потрібен typedef." -#: src/user-defined-types/named-structs.md:42 +#: src/user-defined-types/named-structs.md:39 msgid "Unlike in C++, there is no inheritance between structs." msgstr "На відміну від C++, між структурами немає успадкування." -#: src/user-defined-types/named-structs.md:43 +#: src/user-defined-types/named-structs.md:40 msgid "" "This may be a good time to let people know there are different types of " "structs." @@ -4362,7 +4678,7 @@ msgstr "" "Це може бути вдалий час, щоб повідомити людям, що існують різні типи " "структур." -#: src/user-defined-types/named-structs.md:45 +#: src/user-defined-types/named-structs.md:42 msgid "" "Zero-sized structs (e.g. `struct Foo;`) might be used when implementing a " "trait on some type but don’t have any data that you want to store in the " @@ -4372,7 +4688,7 @@ msgstr "" "використані при реалізації трейту на якомусь типі, але не мають даних, які " "ви хочете зберігати у самому значенні." -#: src/user-defined-types/named-structs.md:48 +#: src/user-defined-types/named-structs.md:45 msgid "" "The next slide will introduce Tuple structs, used when the field names are " "not important." @@ -4380,7 +4696,7 @@ msgstr "" "На наступному слайді буде представлено структури кортежу, які " "використовуються, коли імена полів не важливі." -#: src/user-defined-types/named-structs.md:50 +#: src/user-defined-types/named-structs.md:47 msgid "" "If you already have variables with the right names, then you can create the " "struct using a shorthand." @@ -4388,7 +4704,7 @@ msgstr "" "Якщо у вас уже є змінні з правильними іменами, ви можете створити структуру " "за допомогою скорочення:" -#: src/user-defined-types/named-structs.md:52 +#: src/user-defined-types/named-structs.md:49 msgid "" "The syntax `..avery` allows us to copy the majority of the fields from the " "old struct without having to explicitly type it all out. It must always be " @@ -4398,32 +4714,32 @@ msgstr "" "структури без необхідності явного введення всіх полів. Це завжди має бути " "останнім елементом." -#: src/user-defined-types/tuple-structs.md:11 +#: src/user-defined-types/tuple-structs.md:7 msgid "If the field names are unimportant, you can use a tuple struct:" msgstr "Якщо імена полів неважливі, ви можете використати структуру кортежу:" -#: src/user-defined-types/tuple-structs.md:18 +#: src/user-defined-types/tuple-structs.md:14 msgid "\"({}, {})\"" msgstr "\"({}, {})\"" -#: src/user-defined-types/tuple-structs.md:22 +#: src/user-defined-types/tuple-structs.md:18 msgid "This is often used for single-field wrappers (called newtypes):" msgstr "" "Це часто використовується для обгорток з одним полем (так званих newtypes):" -#: src/user-defined-types/tuple-structs.md:29 +#: src/user-defined-types/tuple-structs.md:25 msgid "\"Ask a rocket scientist at NASA\"" msgstr "\"Запитайте вченого-ракетника з NASA\"" -#: src/user-defined-types/tuple-structs.md:33 +#: src/user-defined-types/tuple-structs.md:29 #: src/android/interoperability/cpp/cpp-bridge.md:50 #: src/bare-metal/microcontrollers/type-state.md:14 -#: src/concurrency/async-pitfalls/cancellation.md:102 -#: src/concurrency/async-pitfalls/cancellation.md:106 +#: src/concurrency/async-pitfalls/cancellation.md:99 +#: src/concurrency/async-pitfalls/cancellation.md:103 msgid "// ...\n" msgstr "// ...\n" -#: src/user-defined-types/tuple-structs.md:44 +#: src/user-defined-types/tuple-structs.md:41 msgid "" "Newtypes are a great way to encode additional information about the value in " "a primitive type, for example:" @@ -4431,12 +4747,12 @@ msgstr "" "Newtypes — чудовий спосіб закодувати додаткову інформацію про значення в " "примітивному типі, наприклад:" -#: src/user-defined-types/tuple-structs.md:46 +#: src/user-defined-types/tuple-structs.md:43 msgid "The number is measured in some units: `Newtons` in the example above." msgstr "" "Число вимірюється в деяких одиницях: у наведеному вище прикладі `Newtons`." -#: src/user-defined-types/tuple-structs.md:47 +#: src/user-defined-types/tuple-structs.md:44 msgid "" "The value passed some validation when it was created, so you no longer have " "to validate it again at every use: `PhoneNumber(String)` or `OddNumber(u32)`." @@ -4445,7 +4761,7 @@ msgstr "" "потрібно перевіряти його знову при кожному використанні: " "`PhoneNumber(String)` або `OddNumber(u32)`." -#: src/user-defined-types/tuple-structs.md:50 +#: src/user-defined-types/tuple-structs.md:47 msgid "" "Demonstrate how to add a `f64` value to a `Newtons` type by accessing the " "single field in the newtype." @@ -4453,7 +4769,7 @@ msgstr "" "Продемонструйте, як додати значення `f64` до типу `Newtons`, отримавши " "доступ до єдиного поля в newtype." -#: src/user-defined-types/tuple-structs.md:52 +#: src/user-defined-types/tuple-structs.md:49 msgid "" "Rust generally doesn’t like inexplicit things, like automatic unwrapping or " "for instance using booleans as integers." @@ -4461,11 +4777,11 @@ msgstr "" "Rust зазвичай не любить неявних речей, таких як автоматичне розгортання або, " "наприклад, використання логічних значень як цілих чисел." -#: src/user-defined-types/tuple-structs.md:54 +#: src/user-defined-types/tuple-structs.md:51 msgid "Operator overloading is discussed on Day 3 (generics)." msgstr "Перевантаження операторів обговорюється в день 3 (дженерики)." -#: src/user-defined-types/tuple-structs.md:55 +#: src/user-defined-types/tuple-structs.md:52 msgid "" "The example is a subtle reference to the [Mars Climate Orbiter](https://en." "wikipedia.org/wiki/Mars_Climate_Orbiter) failure." @@ -4473,34 +4789,34 @@ msgstr "" "Цей приклад є тонким посиланням на невдачу [Mars Climate Orbiter](https://en." "wikipedia.org/wiki/Mars_Climate_Orbiter)." -#: src/user-defined-types/enums.md:7 +#: src/user-defined-types/enums.md:3 msgid "" "The `enum` keyword allows the creation of a type which has a few different " "variants:" msgstr "" "Ключове слово `enum` дозволяє створити тип, який має кілька різних варіантів:" -#: src/user-defined-types/enums.md:19 +#: src/user-defined-types/enums.md:15 msgid "// Simple variant\n" msgstr "// Простий варіант\n" -#: src/user-defined-types/enums.md:20 +#: src/user-defined-types/enums.md:16 msgid "// Tuple variant\n" msgstr "// Варіант кортежу\n" -#: src/user-defined-types/enums.md:21 +#: src/user-defined-types/enums.md:17 msgid "// Struct variant\n" msgstr "// Варіант структури\n" -#: src/user-defined-types/enums.md:26 -msgid "\"On this turn: {:?}\"" -msgstr "\"На цьому повороті: {:?}\"" +#: src/user-defined-types/enums.md:22 +msgid "\"On this turn: {player_move:?}\"" +msgstr "\"На цьому повороті: {player_move:?}\"" -#: src/user-defined-types/enums.md:34 +#: src/user-defined-types/enums.md:31 msgid "Enumerations allow you to collect a set of values under one type." msgstr "Переліки дозволяють збирати набір значень під одним типом." -#: src/user-defined-types/enums.md:35 +#: src/user-defined-types/enums.md:32 msgid "" "`Direction` is a type with variants. There are two values of `Direction`: " "`Direction::Left` and `Direction::Right`." @@ -4508,7 +4824,7 @@ msgstr "" "Напрямок - це тип з варіантами. Існує два значення `Direction`: `Direction::" "Left` та `Direction::Right`." -#: src/user-defined-types/enums.md:37 +#: src/user-defined-types/enums.md:34 msgid "" "`PlayerMove` is a type with three variants. In addition to the payloads, " "Rust will store a discriminant so that it knows at runtime which variant is " @@ -4518,11 +4834,11 @@ msgstr "" "навантаження, Rust зберігатиме дискримінант, щоб під час виконання знати, " "який варіант є у значенні `PlayerMove`." -#: src/user-defined-types/enums.md:40 +#: src/user-defined-types/enums.md:37 msgid "This might be a good time to compare structs and enums:" msgstr "Це може бути гарний час для порівняння структури та переліки:" -#: src/user-defined-types/enums.md:41 +#: src/user-defined-types/enums.md:38 msgid "" "In both, you can have a simple version without fields (unit struct) or one " "with different types of fields (variant payloads)." @@ -4530,7 +4846,7 @@ msgstr "" "В обох ви можете мати просту версію без полів (структура одиниць) або з " "різними типами полів (різні варіанти корисного навантаження)." -#: src/user-defined-types/enums.md:43 +#: src/user-defined-types/enums.md:40 msgid "" "You could even implement the different variants of an enum with separate " "structs but then they wouldn’t be the same type as they would if they were " @@ -4540,16 +4856,16 @@ msgstr "" "але тоді вони не будуть одного типу, як якщо б всі вони були визначені в " "переліку." -#: src/user-defined-types/enums.md:46 +#: src/user-defined-types/enums.md:43 msgid "Rust uses minimal space to store the discriminant." msgstr "" "Rust використовує мінімальний обсяг пам'яті для зберігання дискримінанта." -#: src/user-defined-types/enums.md:47 +#: src/user-defined-types/enums.md:44 msgid "If necessary, it stores an integer of the smallest required size" msgstr "Якщо потрібно, він зберігає ціле число найменшого необхідного розміру" -#: src/user-defined-types/enums.md:48 +#: src/user-defined-types/enums.md:45 msgid "" "If the allowed variant values do not cover all bit patterns, it will use " "invalid bit patterns to encode the discriminant (the \"niche optimization" @@ -4561,28 +4877,27 @@ msgstr "" "(\"нішева оптимізація\"). Наприклад, `Option<&u8>` зберігає або вказівник на " "ціле число, або `NULL` для варіанта `None`." -#: src/user-defined-types/enums.md:52 +#: src/user-defined-types/enums.md:49 msgid "" "You can control the discriminant if needed (e.g., for compatibility with C):" msgstr "" "За потреби можна керувати дискримінантом (наприклад, для сумісності з C):" -#: src/user-defined-types/enums.md:70 +#: src/user-defined-types/enums.md:67 msgid "" "Without `repr`, the discriminant type takes 2 bytes, because 10001 fits 2 " "bytes." msgstr "" "Без `repr` тип дискримінанта займає 2 байти, оскільки 10001 вміщує 2 байти." -#: src/user-defined-types/enums.md:73 src/user-defined-types/static.md:30 -#: src/memory-management/review.md:54 src/memory-management/move.md:103 -#: src/memory-management/copy-types.md:60 src/smart-pointers/box.md:89 -#: src/borrowing/shared.md:36 src/error-handling/result.md:49 -#: src/error-handling/anyhow.md:59 +#: src/user-defined-types/enums.md:70 src/user-defined-types/static.md:27 +#: src/memory-management/review.md:51 src/memory-management/move.md:100 +#: src/memory-management/copy-types.md:57 src/borrowing/shared.md:33 +#: src/error-handling/result.md:46 src/error-handling/anyhow.md:59 msgid "More to Explore" msgstr "Більше інформації для вивчення" -#: src/user-defined-types/enums.md:75 +#: src/user-defined-types/enums.md:72 msgid "" "Rust has several optimizations it can employ to make enums take up less " "space." @@ -4590,7 +4905,7 @@ msgstr "" "Rust має декілька оптимізацій, які можна застосувати, щоб зменшити розмір " "переліків." -#: src/user-defined-types/enums.md:77 +#: src/user-defined-types/enums.md:74 msgid "" "Null pointer optimization: For [some types](https://doc.rust-lang.org/std/" "option/#representation), Rust guarantees that `size_of::()` equals " @@ -4600,7 +4915,7 @@ msgstr "" "org/std/option/#representation) Rust гарантує, що `size_of::()` дорівнює " "`size_of::