diff --git a/po/uk.po b/po/uk.po index 17b8b210ac2..e30d759a956 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-06T09:01:41-05:00\n" "PO-Revision-Date: 2023-10-18 20:05+0300\n" "Last-Translator: Oleksandr Leoshko \n" "Language-Team: \n" @@ -20,15 +20,15 @@ msgstr "Ласкаво просимо в Comprehensive Rust 🦀" msgid "Running the Course" msgstr "Проведення курсу" -#: src/SUMMARY.md src/running-the-course/course-structure.md:1 +#: src/SUMMARY.md src/running-the-course/course-structure.md msgid "Course Structure" msgstr "Структура курсу" -#: src/SUMMARY.md src/running-the-course/keyboard-shortcuts.md:1 +#: src/SUMMARY.md src/running-the-course/keyboard-shortcuts.md msgid "Keyboard Shortcuts" msgstr "Гарячі клавіші" -#: src/SUMMARY.md src/running-the-course/translations.md:1 +#: src/SUMMARY.md src/running-the-course/translations.md msgid "Translations" msgstr "Переклади" @@ -52,64 +52,70 @@ msgstr "Локальний запуск Cargo" msgid "Day 1: Morning" msgstr "День 1: Ранок" -#: src/SUMMARY.md src/concurrency/welcome-async.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-1.md src/welcome-day-2.md src/welcome-day-3.md +#: src/welcome-day-4.md src/concurrency/welcome-async.md msgid "Welcome" msgstr "Ласкаво просимо" -#: src/SUMMARY.md src/hello-world.md src/types-and-values/hello-world.md:5 +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-1.md src/hello-world.md src/types-and-values.md +#: src/types-and-values/hello-world.md msgid "Hello, World" msgstr "Hello World!" -#: src/SUMMARY.md src/hello-world/what-is-rust.md:5 +#: src/SUMMARY.md src/hello-world.md src/hello-world/what-is-rust.md msgid "What is Rust?" msgstr "Що таке Rust?" -#: src/SUMMARY.md src/hello-world/benefits.md:5 +#: src/SUMMARY.md src/hello-world.md src/hello-world/benefits.md msgid "Benefits of Rust" msgstr "Переваги Rust" -#: src/SUMMARY.md src/hello-world/playground.md:5 +#: src/SUMMARY.md src/hello-world.md src/hello-world/playground.md msgid "Playground" msgstr "Ігровий майданчик" -#: src/SUMMARY.md src/types-and-values.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-1.md src/types-and-values.md msgid "Types and Values" msgstr "Типи та значення" -#: src/SUMMARY.md src/types-and-values/variables.md:5 +#: src/SUMMARY.md src/types-and-values.md src/types-and-values/variables.md msgid "Variables" msgstr "Змінні" -#: src/SUMMARY.md src/types-and-values/values.md:5 +#: src/SUMMARY.md src/types-and-values.md src/types-and-values/values.md msgid "Values" msgstr "Значення" -#: src/SUMMARY.md src/types-and-values/arithmetic.md:5 +#: src/SUMMARY.md src/types-and-values.md src/types-and-values/arithmetic.md msgid "Arithmetic" msgstr "Арифметика" -#: src/SUMMARY.md src/types-and-values/inference.md:5 +#: src/SUMMARY.md src/types-and-values.md src/types-and-values/inference.md msgid "Type Inference" msgstr "Виведення типів" -#: src/SUMMARY.md src/types-and-values/exercise.md:5 +#: src/SUMMARY.md src/types-and-values.md src/types-and-values/exercise.md 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 src/types-and-values/solution.md +#: src/control-flow-basics/solution.md src/tuples-and-arrays/solution.md +#: src/references/solution.md src/user-defined-types/solution.md +#: src/pattern-matching/solution.md src/methods-and-traits/solution.md +#: src/generics/solution.md src/std-types/solution.md +#: src/std-traits/solution.md src/memory-management/solution.md +#: src/smart-pointers/solution.md src/borrowing/solution.md +#: src/lifetimes/solution.md src/iterators/solution.md src/modules/solution.md +#: src/testing/solution.md src/error-handling/solution.md +#: src/unsafe-rust/solution.md msgid "Solution" msgstr "Рішення" -#: src/SUMMARY.md src/control-flow-basics.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-1.md src/control-flow-basics.md msgid "Control Flow Basics" msgstr "Основи потоку керування" @@ -117,43 +123,46 @@ msgstr "Основи потоку керування" msgid "`if` Expressions" msgstr "Вирази `if`" -#: src/SUMMARY.md src/control-flow-basics/loops.md:5 +#: src/SUMMARY.md src/control-flow-basics.md src/control-flow-basics/loops.md msgid "Loops" msgstr "Цикли" -#: src/SUMMARY.md src/control-flow-basics/loops/for.md:1 +#: src/SUMMARY.md src/control-flow-basics/loops/for.md msgid "`for`" msgstr "`for`" -#: src/SUMMARY.md src/control-flow-basics/loops/loop.md:1 +#: src/SUMMARY.md src/control-flow-basics/loops/loop.md msgid "`loop`" msgstr "`loop`" -#: src/SUMMARY.md src/control-flow-basics/break-continue.md:5 +#: src/SUMMARY.md src/control-flow-basics/break-continue.md msgid "`break` and `continue`" msgstr "`break` та `continue`" -#: src/SUMMARY.md src/control-flow-basics/break-continue/labels.md:1 +#: src/SUMMARY.md src/control-flow-basics/break-continue/labels.md msgid "Labels" msgstr "Мітки" -#: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes.md:5 +#: src/SUMMARY.md src/control-flow-basics.md +#: src/control-flow-basics/blocks-and-scopes.md msgid "Blocks and Scopes" msgstr "Блоки та області застосування" -#: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes/scopes.md:1 +#: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes/scopes.md msgid "Scopes and Shadowing" msgstr "Області видимості та затінення" -#: src/SUMMARY.md src/control-flow-basics/functions.md:5 +#: src/SUMMARY.md src/control-flow-basics.md +#: src/control-flow-basics/functions.md msgid "Functions" msgstr "Функції" -#: src/SUMMARY.md src/control-flow-basics/macros.md:5 +#: src/SUMMARY.md src/control-flow-basics.md src/control-flow-basics/macros.md msgid "Macros" msgstr "Макроси" -#: src/SUMMARY.md src/control-flow-basics/exercise.md:5 +#: src/SUMMARY.md src/control-flow-basics.md +#: src/control-flow-basics/exercise.md msgid "Exercise: Collatz Sequence" msgstr "Вправа: Послідовність Коллатца" @@ -161,68 +170,74 @@ msgstr "Вправа: Послідовність Коллатца" msgid "Day 1: Afternoon" msgstr "День 1: Полудень" -#: src/SUMMARY.md src/tuples-and-arrays.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-1-afternoon.md src/tuples-and-arrays.md msgid "Tuples and Arrays" msgstr "Кортежі та масиви" -#: src/SUMMARY.md src/tuples-and-arrays/arrays.md:5 +#: src/SUMMARY.md src/tuples-and-arrays.md src/tuples-and-arrays/arrays.md msgid "Arrays" msgstr "Масиви" -#: src/SUMMARY.md src/tuples-and-arrays/tuples.md:5 +#: src/SUMMARY.md src/tuples-and-arrays.md src/tuples-and-arrays/tuples.md msgid "Tuples" msgstr "Кортежі" -#: src/SUMMARY.md src/tuples-and-arrays/iteration.md:5 +#: src/SUMMARY.md src/tuples-and-arrays.md src/tuples-and-arrays/iteration.md msgid "Array Iteration" msgstr "Ітерація масиву" -#: src/SUMMARY.md src/tuples-and-arrays/destructuring.md:5 +#: src/SUMMARY.md src/tuples-and-arrays.md +#: src/tuples-and-arrays/destructuring.md msgid "Patterns and Destructuring" msgstr "Патерни та деструктуризація" -#: src/SUMMARY.md src/tuples-and-arrays/exercise.md:5 +#: src/SUMMARY.md src/tuples-and-arrays.md src/tuples-and-arrays/exercise.md msgid "Exercise: Nested Arrays" msgstr "Вправа: Вкладені масиви" -#: src/SUMMARY.md src/references.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-1-afternoon.md src/references.md msgid "References" msgstr "Посилання" -#: src/SUMMARY.md src/references/shared.md:5 +#: src/SUMMARY.md src/references.md src/references/shared.md msgid "Shared References" msgstr "Спільні посилання" -#: src/SUMMARY.md src/references/exclusive.md:5 +#: src/SUMMARY.md src/references.md src/references/exclusive.md msgid "Exclusive References" msgstr "Ексклюзивні посилання" -#: src/SUMMARY.md src/references/slices.md:5 +#: src/SUMMARY.md src/references.md src/references/slices.md msgid "Slices" msgstr "Зрізи" -#: src/SUMMARY.md src/references/strings.md:9 +#: src/SUMMARY.md src/references.md src/references/strings.md msgid "Strings" msgstr "Рядки" -#: src/SUMMARY.md src/references/exercise.md:5 +#: src/SUMMARY.md src/references.md src/references/exercise.md msgid "Exercise: Geometry" msgstr "Вправа: Геометрія" -#: src/SUMMARY.md src/user-defined-types.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-1-afternoon.md src/user-defined-types.md msgid "User-Defined Types" msgstr "Типи, які визначаються користувачем" -#: src/SUMMARY.md src/user-defined-types/named-structs.md:5 +#: src/SUMMARY.md src/user-defined-types.md +#: src/user-defined-types/named-structs.md msgid "Named Structs" msgstr "Іменовані структури" -#: src/SUMMARY.md src/user-defined-types/tuple-structs.md:9 +#: src/SUMMARY.md src/user-defined-types.md +#: src/user-defined-types/tuple-structs.md msgid "Tuple Structs" msgstr "Кортежні структури" -#: src/SUMMARY.md src/user-defined-types/enums.md:5 -#: src/pattern-matching/destructuring-enums.md:5 +#: src/SUMMARY.md src/user-defined-types.md src/user-defined-types/enums.md +#: src/pattern-matching/destructuring-enums.md msgid "Enums" msgstr "Перелічувані типи" @@ -230,15 +245,15 @@ msgstr "Перелічувані типи" msgid "Const" msgstr "Константи" -#: src/SUMMARY.md +#: src/SUMMARY.md src/user-defined-types.md msgid "Static" msgstr "Статика" -#: src/SUMMARY.md src/user-defined-types/aliases.md:5 +#: src/SUMMARY.md src/user-defined-types.md src/user-defined-types/aliases.md msgid "Type Aliases" msgstr "Псевдоніми типу" -#: src/SUMMARY.md src/user-defined-types/exercise.md:5 +#: src/SUMMARY.md src/user-defined-types.md src/user-defined-types/exercise.md msgid "Exercise: Elevator Events" msgstr "Вправа: події в ліфті" @@ -246,59 +261,62 @@ msgstr "Вправа: події в ліфті" msgid "Day 2: Morning" msgstr "День 2: Ранок" -#: src/SUMMARY.md src/pattern-matching.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-2.md src/pattern-matching.md msgid "Pattern Matching" msgstr "Зіставлення зразків" -#: src/SUMMARY.md src/pattern-matching/match.md:5 +#: src/SUMMARY.md src/pattern-matching.md src/pattern-matching/match.md msgid "Matching Values" msgstr "Співставлення значень" -#: src/SUMMARY.md +#: src/SUMMARY.md src/pattern-matching.md msgid "Destructuring Structs" msgstr "Деструктурування структур" -#: src/SUMMARY.md +#: src/SUMMARY.md src/pattern-matching.md msgid "Destructuring Enums" msgstr "Деструктурування переліків" -#: src/SUMMARY.md src/pattern-matching/let-control-flow.md:5 +#: src/SUMMARY.md src/pattern-matching.md +#: src/pattern-matching/let-control-flow.md msgid "Let Control Flow" msgstr "Потік контролю Let" -#: src/SUMMARY.md src/pattern-matching/exercise.md:5 +#: src/SUMMARY.md src/pattern-matching.md src/pattern-matching/exercise.md msgid "Exercise: Expression Evaluation" msgstr "Вправа: обчислення виразу" -#: src/SUMMARY.md src/methods-and-traits.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-2.md src/methods-and-traits.md msgid "Methods and Traits" msgstr "Методи та Трейти" -#: src/SUMMARY.md src/methods-and-traits/methods.md:5 +#: src/SUMMARY.md src/methods-and-traits.md src/methods-and-traits/methods.md msgid "Methods" msgstr "Методи" -#: src/SUMMARY.md src/methods-and-traits/traits.md:5 +#: src/SUMMARY.md src/methods-and-traits.md src/methods-and-traits/traits.md msgid "Traits" msgstr "Трейти" -#: src/SUMMARY.md src/methods-and-traits/traits/implementing.md:1 +#: src/SUMMARY.md src/methods-and-traits/traits/implementing.md msgid "Implementing Traits" msgstr "Реалізація трейтів" -#: src/SUMMARY.md src/methods-and-traits/traits/supertraits.md:1 +#: src/SUMMARY.md src/methods-and-traits/traits/supertraits.md msgid "Supertraits" msgstr "Супертрейти" -#: src/SUMMARY.md src/methods-and-traits/traits/associated-types.md:1 +#: src/SUMMARY.md src/methods-and-traits/traits/associated-types.md msgid "Associated Types" msgstr "Асоційовані типи" -#: src/SUMMARY.md src/methods-and-traits/deriving.md:5 +#: src/SUMMARY.md src/methods-and-traits.md src/methods-and-traits/deriving.md msgid "Deriving" msgstr "Виведення" -#: src/SUMMARY.md +#: src/SUMMARY.md src/methods-and-traits.md msgid "Exercise: Generic Logger" msgstr "Вправа: Загальний логгер" @@ -306,47 +324,49 @@ msgstr "Вправа: Загальний логгер" msgid "Day 2: Afternoon" msgstr "День 2: Полудень" -#: src/SUMMARY.md src/generics.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-2-afternoon.md src/generics.md msgid "Generics" msgstr "Узагальнені типи" -#: src/SUMMARY.md src/generics/generic-functions.md:5 +#: src/SUMMARY.md src/generics.md src/generics/generic-functions.md msgid "Generic Functions" msgstr "Узагальнені функції" -#: src/SUMMARY.md src/generics/generic-data.md:5 +#: src/SUMMARY.md src/generics.md src/generics/generic-data.md msgid "Generic Data Types" msgstr "Узагальнені типи даних" -#: src/SUMMARY.md src/generics/generic-traits.md:5 +#: src/SUMMARY.md src/generics/generic-traits.md msgid "Generic Traits" msgstr "Узагальнені трейти" -#: src/SUMMARY.md src/generics/trait-bounds.md:5 +#: src/SUMMARY.md src/generics.md src/generics/trait-bounds.md msgid "Trait Bounds" msgstr "Обмеження трейту" -#: src/SUMMARY.md src/generics/impl-trait.md:5 +#: src/SUMMARY.md src/generics/impl-trait.md msgid "`impl Trait`" msgstr "`impl Trait`" -#: src/SUMMARY.md src/generics/dyn-trait.md:5 +#: src/SUMMARY.md src/generics/dyn-trait.md msgid "`dyn Trait`" msgstr "`dyn Trait`" -#: src/SUMMARY.md src/generics/exercise.md:5 +#: src/SUMMARY.md src/generics/exercise.md msgid "Exercise: Generic `min`" msgstr "Вправа: узагальнена `min`" -#: src/SUMMARY.md src/std-types.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-2-afternoon.md src/std-types.md msgid "Standard Library Types" msgstr "Типи стандартної бібліотеки" -#: src/SUMMARY.md src/std-types/std.md:5 +#: src/SUMMARY.md src/std-types.md src/std-types/std.md msgid "Standard Library" msgstr "Стандартна бібліотека" -#: src/SUMMARY.md src/std-types/docs.md:5 +#: src/SUMMARY.md src/std-types.md src/std-types/docs.md msgid "Documentation" msgstr "Документація" @@ -354,49 +374,50 @@ msgstr "Документація" msgid "`Option`" msgstr "`Option`" -#: src/SUMMARY.md src/error-handling/result.md:5 +#: src/SUMMARY.md src/error-handling/result.md msgid "`Result`" msgstr "`Result`" -#: src/SUMMARY.md src/android/aidl/types/primitives.md:14 -#: src/android/interoperability/cpp/type-mapping.md:5 +#: src/SUMMARY.md src/android/aidl/types/primitives.md +#: src/android/interoperability/cpp/type-mapping.md msgid "`String`" msgstr "`String`" -#: src/SUMMARY.md src/std-types/vec.md:5 +#: src/SUMMARY.md src/std-types/vec.md msgid "`Vec`" msgstr "`Vec`" -#: src/SUMMARY.md src/std-types/hashmap.md:5 src/bare-metal/no_std.md +#: src/SUMMARY.md src/std-types/hashmap.md src/bare-metal/no_std.md msgid "`HashMap`" msgstr "`HashMap`" -#: src/SUMMARY.md src/std-types/exercise.md:5 +#: src/SUMMARY.md src/std-types.md src/std-types/exercise.md msgid "Exercise: Counter" msgstr "Вправа: Лічильник" -#: src/SUMMARY.md src/std-traits.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-2-afternoon.md src/std-traits.md msgid "Standard Library Traits" msgstr "Трейти стандартної бібліотеки" -#: src/SUMMARY.md src/std-traits/comparisons.md:5 +#: src/SUMMARY.md src/std-traits.md src/std-traits/comparisons.md #: src/concurrency/welcome-async.md msgid "Comparisons" msgstr "Порівняння" -#: src/SUMMARY.md src/std-traits/operators.md:5 +#: src/SUMMARY.md src/std-traits.md src/std-traits/operators.md msgid "Operators" msgstr "Оператори" -#: src/SUMMARY.md src/std-traits/from-and-into.md:5 +#: src/SUMMARY.md src/std-traits/from-and-into.md msgid "`From` and `Into`" msgstr "`From` та `Into`" -#: src/SUMMARY.md src/std-traits/casting.md:5 +#: src/SUMMARY.md src/std-traits.md src/std-traits/casting.md msgid "Casting" msgstr "Приведення" -#: src/SUMMARY.md src/std-traits/read-and-write.md:5 +#: src/SUMMARY.md src/std-traits/read-and-write.md msgid "`Read` and `Write`" msgstr "`Read` та `Write`" @@ -404,11 +425,11 @@ msgstr "`Read` та `Write`" msgid "`Default`, struct update syntax" msgstr "`Default`, синтаксис оновлення структури" -#: src/SUMMARY.md src/std-traits/closures.md:5 +#: src/SUMMARY.md src/std-traits.md src/std-traits/closures.md msgid "Closures" msgstr "Закриття" -#: src/SUMMARY.md src/std-traits/exercise.md:5 +#: src/SUMMARY.md src/std-traits.md src/std-traits/exercise.md msgid "Exercise: ROT13" msgstr "Вправа: ROT13" @@ -416,23 +437,24 @@ msgstr "Вправа: ROT13" msgid "Day 3: Morning" msgstr "День 3: Ранок" -#: src/SUMMARY.md src/memory-management.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-3.md src/memory-management.md msgid "Memory Management" msgstr "Управління пам'яттю" -#: src/SUMMARY.md src/memory-management/review.md:5 +#: src/SUMMARY.md src/memory-management.md src/memory-management/review.md msgid "Review of Program Memory" msgstr "Огляд пам'яті програми" -#: src/SUMMARY.md src/memory-management/approaches.md:5 +#: src/SUMMARY.md src/memory-management.md src/memory-management/approaches.md msgid "Approaches to Memory Management" msgstr "Підходи до управління пам'яттю" -#: src/SUMMARY.md src/memory-management/ownership.md:5 +#: src/SUMMARY.md src/memory-management.md src/memory-management/ownership.md msgid "Ownership" msgstr "Володіння" -#: src/SUMMARY.md src/memory-management/move.md:5 +#: src/SUMMARY.md src/memory-management.md src/memory-management/move.md msgid "Move Semantics" msgstr "Семантика переміщення" @@ -440,7 +462,7 @@ msgstr "Семантика переміщення" msgid "`Clone`" msgstr "`Clone`" -#: src/SUMMARY.md src/memory-management/copy-types.md:5 +#: src/SUMMARY.md src/memory-management.md src/memory-management/copy-types.md msgid "Copy Types" msgstr "Типи які копіюються" @@ -448,28 +470,29 @@ msgstr "Типи які копіюються" msgid "`Drop`" msgstr "`Drop`" -#: src/SUMMARY.md src/memory-management/exercise.md:5 +#: src/SUMMARY.md src/memory-management.md src/memory-management/exercise.md msgid "Exercise: Builder Type" msgstr "Вправа: Тип будівельника" -#: src/SUMMARY.md src/smart-pointers.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-3.md src/smart-pointers.md msgid "Smart Pointers" msgstr "Розумні вказівники" -#: src/SUMMARY.md src/smart-pointers/box.md:5 -#: src/android/interoperability/cpp/type-mapping.md:9 +#: src/SUMMARY.md src/smart-pointers/box.md +#: src/android/interoperability/cpp/type-mapping.md msgid "`Box`" msgstr "`Box`" -#: src/SUMMARY.md src/smart-pointers/rc.md:5 +#: src/SUMMARY.md src/smart-pointers/rc.md msgid "`Rc`" msgstr "`Rc`" -#: src/SUMMARY.md src/smart-pointers/trait-objects.md:5 +#: src/SUMMARY.md src/smart-pointers.md src/smart-pointers/trait-objects.md msgid "Owned Trait Objects" msgstr "Принадлежні об'єкти трейтів" -#: src/SUMMARY.md src/smart-pointers/exercise.md:5 +#: src/SUMMARY.md src/smart-pointers.md src/smart-pointers/exercise.md msgid "Exercise: Binary Tree" msgstr "Вправа: Бінарне дерево" @@ -477,47 +500,49 @@ msgstr "Вправа: Бінарне дерево" msgid "Day 3: Afternoon" msgstr "День 3: Полудень" -#: src/SUMMARY.md src/borrowing.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-3-afternoon.md src/borrowing.md msgid "Borrowing" msgstr "Запозичення" -#: src/SUMMARY.md src/borrowing/shared.md:5 +#: src/SUMMARY.md src/borrowing.md src/borrowing/shared.md msgid "Borrowing a Value" msgstr "Запозичення значення" -#: src/SUMMARY.md src/borrowing/borrowck.md:5 +#: src/SUMMARY.md src/borrowing.md src/borrowing/borrowck.md msgid "Borrow Checking" msgstr "Перевірка запозичення" -#: src/SUMMARY.md src/borrowing/examples.md:5 +#: src/SUMMARY.md src/borrowing.md src/borrowing/examples.md msgid "Borrow Errors" msgstr "Помилки запозичення" -#: src/SUMMARY.md src/borrowing/interior-mutability.md:5 +#: src/SUMMARY.md src/borrowing.md src/borrowing/interior-mutability.md msgid "Interior Mutability" msgstr "Внутрішня мутабельність" -#: src/SUMMARY.md src/borrowing/exercise.md:5 +#: src/SUMMARY.md src/borrowing.md src/borrowing/exercise.md msgid "Exercise: Health Statistics" msgstr "Вправа: Статистика здоров’я" -#: src/SUMMARY.md src/lifetimes.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-3-afternoon.md src/lifetimes.md msgid "Lifetimes" msgstr "Тривалість життя" -#: src/SUMMARY.md src/lifetimes/lifetime-annotations.md:5 +#: src/SUMMARY.md src/lifetimes.md src/lifetimes/lifetime-annotations.md msgid "Lifetime Annotations" msgstr "Анотації тривалісті життя" -#: src/SUMMARY.md +#: src/SUMMARY.md src/lifetimes.md msgid "Lifetime Elision" msgstr "Упущення тривалісті життя" -#: src/SUMMARY.md +#: src/SUMMARY.md src/lifetimes.md msgid "Struct Lifetimes" msgstr "Тривалість життя структур" -#: src/SUMMARY.md src/lifetimes/exercise.md:5 +#: src/SUMMARY.md src/lifetimes.md src/lifetimes/exercise.md msgid "Exercise: Protobuf Parsing" msgstr "Вправа: Розбір Protobuf" @@ -525,15 +550,16 @@ msgstr "Вправа: Розбір Protobuf" msgid "Day 4: Morning" msgstr "День 4: Ранок" -#: src/SUMMARY.md src/iterators.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-4.md src/iterators.md msgid "Iterators" msgstr "Ітератори" -#: src/SUMMARY.md src/iterators/iterator.md:5 src/bare-metal/no_std.md +#: src/SUMMARY.md src/iterators/iterator.md src/bare-metal/no_std.md msgid "`Iterator`" msgstr "`Ітератор`" -#: src/SUMMARY.md src/iterators/intoiterator.md:5 +#: src/SUMMARY.md src/iterators/intoiterator.md msgid "`IntoIterator`" msgstr "`IntoIterator`" @@ -541,19 +567,20 @@ msgstr "`IntoIterator`" msgid "`FromIterator`" msgstr "`FromIterator`" -#: src/SUMMARY.md src/iterators/exercise.md:5 +#: src/SUMMARY.md src/iterators.md src/iterators/exercise.md msgid "Exercise: Iterator Method Chaining" msgstr "Вправа: ланцюжок методів ітератора" -#: src/SUMMARY.md src/modules.md src/modules/modules.md:5 +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-4.md src/modules.md src/modules/modules.md msgid "Modules" msgstr "Модулі" -#: src/SUMMARY.md src/modules/filesystem.md:5 +#: src/SUMMARY.md src/modules.md src/modules/filesystem.md msgid "Filesystem Hierarchy" msgstr "Ієрархія файлової системи" -#: src/SUMMARY.md src/modules/visibility.md:5 +#: src/SUMMARY.md src/modules.md src/modules/visibility.md msgid "Visibility" msgstr "Видимість" @@ -561,27 +588,28 @@ msgstr "Видимість" msgid "`use`, `super`, `self`" msgstr "`use`, `super`, `self`" -#: src/SUMMARY.md src/modules/exercise.md:5 +#: src/SUMMARY.md src/modules.md src/modules/exercise.md msgid "Exercise: Modules for a GUI Library" msgstr "Вправа: Модулі для бібліотеки графічного інтерфейсу користувача" -#: src/SUMMARY.md src/testing.md src/chromium/testing.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-4.md src/testing.md src/chromium/testing.md msgid "Testing" msgstr "Тестування" -#: src/SUMMARY.md +#: src/SUMMARY.md src/testing.md msgid "Test Modules" msgstr "Тестові модулі" -#: src/SUMMARY.md src/testing/other.md:5 +#: src/SUMMARY.md src/testing.md src/testing/other.md msgid "Other Types of Tests" msgstr "Інші типи тестів" -#: src/SUMMARY.md src/testing/lints.md:5 +#: src/SUMMARY.md src/testing.md src/testing/lints.md msgid "Compiler Lints and Clippy" msgstr "Лінти компілятора та Clippy" -#: src/SUMMARY.md src/testing/exercise.md:5 +#: src/SUMMARY.md src/testing.md src/testing/exercise.md msgid "Exercise: Luhn Algorithm" msgstr "Вправа: Алгоритм Луна" @@ -589,19 +617,20 @@ msgstr "Вправа: Алгоритм Луна" msgid "Day 4: Afternoon" msgstr "День 4: Полудень" -#: src/SUMMARY.md src/error-handling.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-4-afternoon.md src/error-handling.md msgid "Error Handling" msgstr "Обробка помилок" -#: src/SUMMARY.md src/error-handling/panics.md:5 +#: src/SUMMARY.md src/error-handling.md src/error-handling/panics.md msgid "Panics" msgstr "Паніки" -#: src/SUMMARY.md src/error-handling/try.md:5 +#: src/SUMMARY.md src/error-handling.md src/error-handling/try.md msgid "Try Operator" msgstr "Оператор спроб" -#: src/SUMMARY.md src/error-handling/try-conversions.md:5 +#: src/SUMMARY.md src/error-handling.md src/error-handling/try-conversions.md msgid "Try Conversions" msgstr "Перетворення спроб" @@ -609,11 +638,11 @@ msgstr "Перетворення спроб" msgid "`Error` Trait" msgstr "`Error` трейт" -#: src/SUMMARY.md src/error-handling/thiserror.md:5 +#: src/SUMMARY.md src/error-handling/thiserror.md msgid "`thiserror`" msgstr "`thiserror`" -#: src/SUMMARY.md src/error-handling/anyhow.md:5 +#: src/SUMMARY.md src/error-handling/anyhow.md msgid "`anyhow`" msgstr "`anyhow`" @@ -621,39 +650,40 @@ msgstr "`anyhow`" msgid "Exercise: Rewriting with `Result`" msgstr "Вправа: Переписування с `Result`" -#: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/unsafe.md:5 +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/welcome-day-4-afternoon.md src/unsafe-rust.md src/unsafe-rust/unsafe.md msgid "Unsafe Rust" msgstr "Небезпечний Rust" -#: src/SUMMARY.md +#: src/SUMMARY.md src/unsafe-rust.md msgid "Unsafe" msgstr "Unsafe" -#: src/SUMMARY.md src/unsafe-rust/dereferencing.md:5 +#: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/dereferencing.md msgid "Dereferencing Raw Pointers" msgstr "Розіменування \"сирих\" вказівників" -#: src/SUMMARY.md src/unsafe-rust/mutable-static.md:5 +#: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/mutable-static.md msgid "Mutable Static Variables" msgstr "Несталі статичні змінні" -#: src/SUMMARY.md src/unsafe-rust/unions.md:5 +#: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/unions.md msgid "Unions" msgstr "Об'єднання" -#: src/SUMMARY.md src/unsafe-rust/unsafe-functions.md:5 +#: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/unsafe-functions.md msgid "Unsafe Functions" msgstr "Небезпечні функції" -#: src/SUMMARY.md +#: src/SUMMARY.md src/unsafe-rust.md msgid "Unsafe Traits" msgstr "Небезпечні трейти" -#: src/SUMMARY.md +#: src/SUMMARY.md src/unsafe-rust.md msgid "Exercise: FFI Wrapper" msgstr "Вправа: обгортка FFI" -#: src/SUMMARY.md src/bare-metal/android.md +#: src/SUMMARY.md msgid "Android" msgstr "Android" @@ -677,7 +707,7 @@ msgstr "Бібліотека" msgid "AIDL" msgstr "AIDL" -#: src/SUMMARY.md src/android/aidl/birthday-service.md:1 +#: src/SUMMARY.md src/android/aidl/birthday-service.md msgid "Birthday Service Tutorial" msgstr "Посібник із сервісу Birthday" @@ -697,7 +727,7 @@ msgstr "Сервіс" msgid "Server" msgstr "Сервер" -#: src/SUMMARY.md src/android/aidl/example-service/deploy.md:1 +#: src/SUMMARY.md src/android/aidl/example-service/deploy.md msgid "Deploy" msgstr "Розгортка" @@ -705,7 +735,7 @@ msgstr "Розгортка" msgid "Client" msgstr "Кліент" -#: src/SUMMARY.md src/android/aidl/example-service/changing-definition.md:1 +#: src/SUMMARY.md src/android/aidl/example-service/changing-definition.md msgid "Changing API" msgstr "Зміна API" @@ -717,35 +747,35 @@ msgstr "Оновлення реалізацій" msgid "AIDL Types" msgstr "AIDL типи" -#: src/SUMMARY.md src/android/aidl/types/primitives.md:1 +#: src/SUMMARY.md src/android/aidl/types/primitives.md msgid "Primitive Types" msgstr "Примітивні типи" -#: src/SUMMARY.md src/android/aidl/types/arrays.md:1 +#: src/SUMMARY.md src/android/aidl/types/arrays.md msgid "Array Types" msgstr "Типи Масивів" -#: src/SUMMARY.md src/android/aidl/types/objects.md:1 +#: src/SUMMARY.md src/android/aidl/types/objects.md msgid "Sending Objects" msgstr "Надсилання об'єктів" -#: src/SUMMARY.md src/android/aidl/types/parcelables.md:1 +#: src/SUMMARY.md src/android/aidl/types/parcelables.md msgid "Parcelables" msgstr "Посилкові данні" -#: src/SUMMARY.md src/android/aidl/types/file-descriptor.md:1 +#: src/SUMMARY.md src/android/aidl/types/file-descriptor.md msgid "Sending Files" msgstr "Надсилання файлів" -#: src/SUMMARY.md src/android/testing/googletest.md:5 +#: src/SUMMARY.md src/android/testing/googletest.md msgid "GoogleTest" msgstr "GoogleTest" -#: src/SUMMARY.md src/android/testing/mocking.md:5 +#: src/SUMMARY.md src/android/testing/mocking.md msgid "Mocking" msgstr "Mocking" -#: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md:1 +#: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md msgid "Logging" msgstr "Журналювання" @@ -765,11 +795,11 @@ msgstr "Виклик С за допомогою Bindgen" msgid "Calling Rust from C" msgstr "Виклик Rust з C" -#: src/SUMMARY.md src/android/interoperability/cpp.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp.md msgid "With C++" msgstr "З С++" -#: src/SUMMARY.md src/android/interoperability/cpp/bridge.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp/bridge.md msgid "The Bridge Module" msgstr "Модуль Bridge" @@ -777,7 +807,7 @@ msgstr "Модуль Bridge" msgid "Rust Bridge" msgstr "Rust Bridge" -#: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md msgid "Generated C++" msgstr "Згенерований C++" @@ -785,23 +815,23 @@ msgstr "Згенерований C++" msgid "C++ Bridge" msgstr "C++ Bridge" -#: src/SUMMARY.md src/android/interoperability/cpp/shared-types.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp/shared-types.md msgid "Shared Types" msgstr "Спільні типи" -#: src/SUMMARY.md src/android/interoperability/cpp/shared-enums.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp/shared-enums.md msgid "Shared Enums" msgstr "Спільні переліки" -#: src/SUMMARY.md src/android/interoperability/cpp/rust-result.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp/rust-result.md msgid "Rust Error Handling" msgstr "Обробка помилок в Rust" -#: src/SUMMARY.md src/android/interoperability/cpp/cpp-exception.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp/cpp-exception.md msgid "C++ Error Handling" msgstr "Обробка помилок в C++" -#: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md:1 +#: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md msgid "Additional Types" msgstr "Додаткові типи" @@ -821,12 +851,6 @@ msgstr "Збірка для Android: Rust" 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 msgid "Chromium" msgstr "Chromium" @@ -843,27 +867,27 @@ msgstr "Політика" msgid "Unsafe Code" msgstr "Небезпечний код" -#: src/SUMMARY.md src/chromium/build-rules/depending.md:1 +#: src/SUMMARY.md src/chromium/build-rules/depending.md 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 src/chromium/build-rules/vscode.md msgid "Visual Studio Code" msgstr "Visual Studio Code" -#: src/SUMMARY.md src/exercises/chromium/third-party.md:1 +#: src/SUMMARY.md src/exercises/chromium/third-party.md msgid "Exercise" msgstr "Вправа" -#: src/SUMMARY.md src/chromium/testing/rust-gtest-interop.md:1 +#: src/SUMMARY.md src/chromium/testing/rust-gtest-interop.md msgid "`rust_gtest_interop` Library" msgstr "Бібліотека `rust_gtest_interop`" -#: src/SUMMARY.md src/chromium/testing/build-gn.md:1 +#: src/SUMMARY.md src/chromium/testing/build-gn.md msgid "GN Rules for Rust Tests" msgstr "Правила GN для тестів Rust" -#: src/SUMMARY.md src/chromium/testing/chromium-import-macro.md:1 +#: src/SUMMARY.md src/chromium/testing/chromium-import-macro.md msgid "`chromium::import!` Macro" msgstr "Макрос `chromium::import!`" @@ -871,16 +895,15 @@ msgstr "Макрос `chromium::import!`" msgid "Interoperability with C++" msgstr "Взаємодія з C++" -#: src/SUMMARY.md src/chromium/interoperability-with-cpp/example-bindings.md:1 +#: src/SUMMARY.md src/chromium/interoperability-with-cpp/example-bindings.md msgid "Example Bindings" msgstr "Приклади прив'язок" -#: src/SUMMARY.md -#: src/chromium/interoperability-with-cpp/limitations-of-cxx.md:1 +#: src/SUMMARY.md src/chromium/interoperability-with-cpp/limitations-of-cxx.md msgid "Limitations of CXX" msgstr "Обмеження CXX" -#: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md:1 +#: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md msgid "CXX Error Handling" msgstr "Обробка помилок в CXX" @@ -905,37 +928,35 @@ msgid "Configuring Cargo.toml" msgstr "Налаштування Cargo.toml" #: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md:1 +#: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md msgid "Configuring `gnrt_config.toml`" msgstr "Налаштування `gnrt_config.toml`" -#: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/downloading-crates.md:1 +#: src/SUMMARY.md src/chromium/adding-third-party-crates/downloading-crates.md msgid "Downloading Crates" msgstr "Завантаження крейтів" #: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/generating-gn-build-rules.md:1 +#: src/chromium/adding-third-party-crates/generating-gn-build-rules.md msgid "Generating `gn` Build Rules" msgstr "Створення правил побудови `gn`" -#: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/resolving-problems.md:1 +#: src/SUMMARY.md src/chromium/adding-third-party-crates/resolving-problems.md msgid "Resolving Problems" msgstr "Вирішення проблем" #: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md:1 +#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md msgid "Build Scripts Which Generate Code" msgstr "Скрипти збірки, які генерують код" #: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md:1 +#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md msgid "Build Scripts Which Build C++ or Take Arbitrary Actions" msgstr "Скрипти збірки, які будують C++ або виконують довільні дії" #: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/depending-on-a-crate.md:1 +#: src/chromium/adding-third-party-crates/depending-on-a-crate.md msgid "Depending on a Crate" msgstr "Залежнісь від крейта" @@ -947,8 +968,7 @@ msgstr "Перевірки та аудити" msgid "Checking into Chromium Source Code" msgstr "Реєстрація в Chromium Source Code" -#: src/SUMMARY.md -#: src/chromium/adding-third-party-crates/keeping-up-to-date.md:1 +#: src/SUMMARY.md src/chromium/adding-third-party-crates/keeping-up-to-date.md msgid "Keeping Crates Up to Date" msgstr "Підтримання крейтів в актуальному стані" @@ -972,7 +992,7 @@ msgstr "`no_std`" msgid "A Minimal Example" msgstr "Мінімальний приклад" -#: src/SUMMARY.md src/bare-metal/no_std.md src/bare-metal/alloc.md:1 +#: src/SUMMARY.md src/bare-metal/no_std.md src/bare-metal/alloc.md msgid "`alloc`" msgstr "`alloc`" @@ -980,7 +1000,7 @@ msgstr "`alloc`" msgid "Microcontrollers" msgstr "Мікроконтролери" -#: src/SUMMARY.md src/bare-metal/microcontrollers/mmio.md:1 +#: src/SUMMARY.md src/bare-metal/microcontrollers/mmio.md msgid "Raw MMIO" msgstr "Сирий ввід вивід з відображеної пам'яті (MMIO)" @@ -1000,15 +1020,15 @@ msgstr "Крейти підтримки плат" msgid "The Type State Pattern" msgstr "Шаблон стану типу" -#: src/SUMMARY.md src/bare-metal/microcontrollers/embedded-hal.md:1 +#: src/SUMMARY.md src/bare-metal/microcontrollers/embedded-hal.md msgid "`embedded-hal`" msgstr "`embedded-hal`" -#: src/SUMMARY.md src/bare-metal/microcontrollers/probe-rs.md:1 +#: src/SUMMARY.md src/bare-metal/microcontrollers/probe-rs.md msgid "`probe-rs` and `cargo-embed`" msgstr "`probe-rs` та `cargo-embed`" -#: src/SUMMARY.md src/bare-metal/microcontrollers/debugging.md:1 +#: src/SUMMARY.md src/bare-metal/microcontrollers/debugging.md msgid "Debugging" msgstr "Налагодження" @@ -1016,13 +1036,22 @@ msgstr "Налагодження" msgid "Other Projects" msgstr "Інші проєкти" -#: src/SUMMARY.md src/exercises/bare-metal/compass.md:1 -#: src/exercises/bare-metal/solutions-morning.md:3 +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/exercises/bare-metal/morning.md src/exercises/bare-metal/afternoon.md +#: src/concurrency/welcome.md src/concurrency/sync-exercises.md +#: src/concurrency/welcome-async.md src/concurrency/async-exercises.md +msgid "Exercises" +msgstr "Вправи" + +#: src/SUMMARY.md src/exercises/bare-metal/compass.md +#: src/exercises/bare-metal/solutions-morning.md msgid "Compass" msgstr "Компас" -#: src/SUMMARY.md src/concurrency/sync-exercises/solutions.md:5 -#: src/concurrency/async-exercises/solutions.md:5 +#: src/SUMMARY.md src/concurrency/sync-exercises.md +#: src/concurrency/sync-exercises/solutions.md +#: src/concurrency/async-exercises.md +#: src/concurrency/async-exercises/solutions.md msgid "Solutions" msgstr "Рішення" @@ -1034,7 +1063,7 @@ msgstr "Залізо: Полудень" msgid "Application Processors" msgstr "Прикладні процесори" -#: src/SUMMARY.md src/bare-metal/aps/entry-point.md:1 +#: src/SUMMARY.md src/bare-metal/aps/entry-point.md msgid "Getting Ready to Rust" msgstr "Підготовка до Rust" @@ -1058,7 +1087,7 @@ msgstr "Більше трейтів" msgid "A Better UART Driver" msgstr "Кращий драйвер UART" -#: src/SUMMARY.md src/bare-metal/aps/better-uart/bitflags.md:1 +#: src/SUMMARY.md src/bare-metal/aps/better-uart/bitflags.md msgid "Bitflags" msgstr "Бітові прапорці (крейт bitflags)" @@ -1066,7 +1095,7 @@ msgstr "Бітові прапорці (крейт bitflags)" msgid "Multiple Registers" msgstr "Кілька регістрів" -#: src/SUMMARY.md src/bare-metal/aps/better-uart/driver.md:1 +#: src/SUMMARY.md src/bare-metal/aps/better-uart/driver.md msgid "Driver" msgstr "Драйвер" @@ -1074,8 +1103,7 @@ msgstr "Драйвер" msgid "Using It" msgstr "Використання" -#: src/SUMMARY.md src/error-handling/result.md:54 -#: src/bare-metal/aps/exceptions.md:1 +#: src/SUMMARY.md src/error-handling/result.md src/bare-metal/aps/exceptions.md msgid "Exceptions" msgstr "Виключення" @@ -1083,26 +1111,30 @@ msgstr "Виключення" msgid "Useful Crates" msgstr "Корисні крейти" -#: src/SUMMARY.md src/bare-metal/useful-crates/zerocopy.md:1 +#: src/SUMMARY.md src/bare-metal/useful-crates/zerocopy.md msgid "`zerocopy`" msgstr "`zerocopy`" -#: src/SUMMARY.md src/bare-metal/useful-crates/aarch64-paging.md:1 +#: src/SUMMARY.md src/bare-metal/useful-crates/aarch64-paging.md msgid "`aarch64-paging`" msgstr "`aarch64-paging`" -#: src/SUMMARY.md src/bare-metal/useful-crates/buddy_system_allocator.md:1 +#: src/SUMMARY.md src/bare-metal/useful-crates/buddy_system_allocator.md msgid "`buddy_system_allocator`" msgstr "`buddy_system_allocator`" -#: src/SUMMARY.md src/bare-metal/useful-crates/tinyvec.md:1 +#: src/SUMMARY.md src/bare-metal/useful-crates/tinyvec.md msgid "`tinyvec`" msgstr "`tinyvec`" -#: src/SUMMARY.md src/bare-metal/useful-crates/spin.md:1 +#: src/SUMMARY.md src/bare-metal/useful-crates/spin.md msgid "`spin`" msgstr "`spin`" +#: src/SUMMARY.md src/bare-metal/android.md +msgid "Bare-Metal on Android" +msgstr "Залізо на Android" + #: src/SUMMARY.md msgid "`vmbase`" msgstr "`vmbase`" @@ -1115,31 +1147,36 @@ msgstr "Драйвер годинника реального часу (RTC)" msgid "Concurrency: Morning" msgstr "Одночасність виконання: Ранок" -#: src/SUMMARY.md src/concurrency/threads.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/concurrency/welcome.md src/concurrency/threads.md msgid "Threads" msgstr "Потоки" -#: src/SUMMARY.md src/concurrency/threads/plain.md:5 +#: src/SUMMARY.md src/concurrency/threads.md src/concurrency/threads/plain.md msgid "Plain Threads" msgstr "Звичайні потоки" -#: src/SUMMARY.md src/concurrency/threads/scoped.md:5 +#: src/SUMMARY.md src/concurrency/threads.md src/concurrency/threads/scoped.md msgid "Scoped Threads" msgstr "Потоки з областю видимості" -#: src/SUMMARY.md src/concurrency/channels.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/concurrency/welcome.md src/concurrency/channels.md msgid "Channels" msgstr "Канали" -#: src/SUMMARY.md src/concurrency/channels/senders-receivers.md:5 +#: src/SUMMARY.md src/concurrency/channels.md +#: src/concurrency/channels/senders-receivers.md msgid "Senders and Receivers" msgstr "Відправники та отримувачі" -#: src/SUMMARY.md src/concurrency/channels/unbounded.md:5 +#: src/SUMMARY.md src/concurrency/channels.md +#: src/concurrency/channels/unbounded.md msgid "Unbounded Channels" msgstr "Незав'язані канали" -#: src/SUMMARY.md src/concurrency/channels/bounded.md:5 +#: src/SUMMARY.md src/concurrency/channels.md +#: src/concurrency/channels/bounded.md msgid "Bounded Channels" msgstr "Зав'язані канали" @@ -1147,46 +1184,52 @@ msgstr "Зав'язані канали" msgid "`Send` and `Sync`" msgstr "`Send` та `Sync`" -#: src/SUMMARY.md src/concurrency/send-sync/marker-traits.md:5 +#: src/SUMMARY.md src/concurrency/send-sync.md +#: src/concurrency/send-sync/marker-traits.md msgid "Marker Traits" msgstr "Маркерні трейти" -#: src/SUMMARY.md src/concurrency/send-sync/send.md:5 +#: src/SUMMARY.md src/concurrency/send-sync/send.md msgid "`Send`" msgstr "`Send`" -#: src/SUMMARY.md src/concurrency/send-sync/sync.md:5 +#: src/SUMMARY.md src/concurrency/send-sync/sync.md msgid "`Sync`" msgstr "`Sync`" -#: src/SUMMARY.md src/concurrency/send-sync/examples.md:5 +#: src/SUMMARY.md src/concurrency/send-sync.md +#: src/concurrency/send-sync/examples.md msgid "Examples" msgstr "Приклади" -#: src/SUMMARY.md src/concurrency/shared-state.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/concurrency/welcome.md src/concurrency/shared-state.md msgid "Shared State" msgstr "Спільний стан" -#: src/SUMMARY.md src/concurrency/shared-state/arc.md:5 +#: src/SUMMARY.md src/concurrency/shared-state/arc.md msgid "`Arc`" msgstr "`Arc`" -#: src/SUMMARY.md src/concurrency/shared-state/mutex.md:5 +#: src/SUMMARY.md src/concurrency/shared-state/mutex.md 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 src/memory-management/review.md +#: src/error-handling/try-conversions.md src/concurrency/shared-state.md +#: src/concurrency/shared-state/example.md msgid "Example" msgstr "Приклад" -#: src/SUMMARY.md src/concurrency/sync-exercises/dining-philosophers.md:5 -#: src/concurrency/sync-exercises/solutions.md:7 +#: src/SUMMARY.md src/concurrency/sync-exercises.md +#: src/concurrency/sync-exercises/dining-philosophers.md +#: src/concurrency/sync-exercises/solutions.md +#: src/concurrency/async-exercises.md msgid "Dining Philosophers" msgstr "Вечеря філософів" -#: src/SUMMARY.md src/concurrency/sync-exercises/link-checker.md:5 +#: src/SUMMARY.md src/concurrency/sync-exercises.md +#: src/concurrency/sync-exercises/link-checker.md msgid "Multi-threaded Link Checker" msgstr "Перевірка багатопоточних посилань" @@ -1194,70 +1237,79 @@ msgstr "Перевірка багатопоточних посилань" msgid "Concurrency: Afternoon" msgstr "Одночасність виконання: Полудень" -#: src/SUMMARY.md src/concurrency/async.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/concurrency/welcome-async.md src/concurrency/async.md msgid "Async Basics" msgstr "Основи асинхронізації" -#: src/SUMMARY.md src/concurrency/async/async-await.md:5 +#: src/SUMMARY.md src/concurrency/async/async-await.md msgid "`async`/`await`" msgstr "`async`/`await`" -#: src/SUMMARY.md src/concurrency/async/futures.md:5 +#: src/SUMMARY.md src/concurrency/async.md src/concurrency/async/futures.md msgid "Futures" msgstr "Futures" -#: src/SUMMARY.md src/concurrency/async/runtimes.md:5 +#: src/SUMMARY.md src/concurrency/async.md src/concurrency/async/runtimes.md msgid "Runtimes" msgstr "Середовища виконання" -#: src/SUMMARY.md src/concurrency/async/runtimes/tokio.md:1 +#: src/SUMMARY.md src/concurrency/async/runtimes/tokio.md 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 src/concurrency/sync-exercises/link-checker.md +#: src/concurrency/async.md src/concurrency/async/tasks.md +#: src/concurrency/async-exercises/chat-app.md msgid "Tasks" msgstr "Завдання" -#: src/SUMMARY.md src/concurrency/async-control-flow.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/concurrency/welcome-async.md src/concurrency/async-control-flow.md msgid "Channels and Control Flow" msgstr "Канали та потік управління" -#: src/SUMMARY.md src/concurrency/async-control-flow/channels.md:5 +#: src/SUMMARY.md src/concurrency/async-control-flow.md +#: src/concurrency/async-control-flow/channels.md msgid "Async Channels" msgstr "Асинхронні канали" -#: src/SUMMARY.md src/concurrency/async-control-flow/join.md:5 +#: src/SUMMARY.md src/concurrency/async-control-flow.md +#: src/concurrency/async-control-flow/join.md msgid "Join" msgstr "Join" -#: src/SUMMARY.md src/concurrency/async-control-flow/select.md:5 +#: src/SUMMARY.md src/concurrency/async-control-flow.md +#: src/concurrency/async-control-flow/select.md msgid "Select" msgstr "Select" -#: src/SUMMARY.md src/concurrency/async-pitfalls.md +#: src/SUMMARY.md src/running-the-course/course-structure.md +#: src/concurrency/welcome-async.md src/concurrency/async-pitfalls.md msgid "Pitfalls" msgstr "Підводні камені" -#: src/SUMMARY.md +#: src/SUMMARY.md src/concurrency/async-pitfalls.md msgid "Blocking the Executor" msgstr "Блокування Виконавця" -#: src/SUMMARY.md src/concurrency/async-pitfalls/pin.md:5 +#: src/SUMMARY.md src/concurrency/async-pitfalls/pin.md msgid "`Pin`" msgstr "`Pin`" -#: src/SUMMARY.md src/concurrency/async-pitfalls/async-traits.md:5 +#: src/SUMMARY.md src/concurrency/async-pitfalls.md +#: src/concurrency/async-pitfalls/async-traits.md msgid "Async Traits" msgstr "Асинхронні трейти" -#: src/SUMMARY.md src/concurrency/async-pitfalls/cancellation.md:5 +#: src/SUMMARY.md src/concurrency/async-pitfalls.md +#: src/concurrency/async-pitfalls/cancellation.md msgid "Cancellation" msgstr "Скасування" -#: src/SUMMARY.md src/concurrency/async-exercises/chat-app.md:5 -#: src/concurrency/async-exercises/solutions.md:92 +#: src/SUMMARY.md src/concurrency/async-exercises.md +#: src/concurrency/async-exercises/chat-app.md +#: src/concurrency/async-exercises/solutions.md msgid "Broadcast Chat Application" msgstr "Програма широкомовного чату" @@ -1463,7 +1515,7 @@ msgstr "" "які викладач повинен висвітлити, а також відповіді на типові питання, що " "виникають під час проходження курсу." -#: src/running-the-course.md src/running-the-course/course-structure.md:3 +#: src/running-the-course.md src/running-the-course/course-structure.md msgid "This page is for the course instructor." msgstr "Ця сторінка призначена для викладача курсу." @@ -1593,11 +1645,11 @@ msgstr "" "[надіслати нам свої відгуки](https://github.com/google/comprehensive-rust/" "discussions/100)!" -#: src/running-the-course/course-structure.md:5 +#: src/running-the-course/course-structure.md msgid "Rust Fundamentals" msgstr "Основи Rust" -#: src/running-the-course/course-structure.md:7 +#: src/running-the-course/course-structure.md msgid "" "The first four days make up [Rust Fundamentals](../welcome-day-1.md). The " "days are fast paced and we cover a lot of ground!" @@ -1605,15 +1657,140 @@ msgstr "" "Перші чотири дні складають [Основи Rust](../welcome-day-1.md). Дні " "протікають швидко, і ми багато робимо!" -#: src/running-the-course/course-structure.md:10 -msgid "{{%course outline Fundamentals}}" -msgstr "Основи Rust" +#: src/running-the-course/course-structure.md +msgid "Course schedule:" +msgstr "Структура курсу" + +#: src/running-the-course/course-structure.md +msgid "Day 1 Morning (2 hours and 5 minutes, including breaks)" +msgstr "День 1 Ранок (2 години 5 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md 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 "Segment" +msgstr "Сегмент" + +#: src/running-the-course/course-structure.md src/welcome-day-1.md +#: src/hello-world.md src/types-and-values.md src/control-flow-basics.md +#: src/welcome-day-1-afternoon.md src/tuples-and-arrays.md src/references.md +#: src/user-defined-types.md src/welcome-day-2.md src/pattern-matching.md +#: src/methods-and-traits.md src/welcome-day-2-afternoon.md src/generics.md +#: src/std-types.md src/std-traits.md src/welcome-day-3.md +#: src/memory-management.md src/smart-pointers.md +#: src/welcome-day-3-afternoon.md src/borrowing.md src/lifetimes.md +#: src/welcome-day-4.md src/iterators.md src/modules.md src/testing.md +#: src/welcome-day-4-afternoon.md src/error-handling.md src/unsafe-rust.md +#: src/concurrency/welcome.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/welcome-async.md src/concurrency/async.md +#: src/concurrency/async-control-flow.md src/concurrency/async-pitfalls.md +#: src/concurrency/async-exercises.md +msgid "Duration" +msgstr "Тривалість" + +#: src/running-the-course/course-structure.md src/welcome-day-1.md +#: src/types-and-values.md src/control-flow-basics.md src/tuples-and-arrays.md +#: src/user-defined-types.md src/generics.md src/std-types.md src/std-traits.md +#: src/memory-management.md src/smart-pointers.md src/lifetimes.md +#: src/iterators.md src/modules.md src/testing.md src/error-handling.md +#: src/unsafe-rust.md src/concurrency/shared-state.md +#: src/concurrency/async-control-flow.md src/concurrency/async-pitfalls.md +msgid "5 minutes" +msgstr "5 хвилин" + +#: src/running-the-course/course-structure.md src/welcome-day-1.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/methods-and-traits.md +#: src/modules.md src/concurrency/welcome.md src/concurrency/threads.md +#: src/concurrency/shared-state.md +msgid "15 minutes" +msgstr "15 хвилин" + +#: src/running-the-course/course-structure.md src/welcome-day-1.md +#: src/welcome-day-4.md +msgid "40 minutes" +msgstr "40 хвилин" + +#: src/running-the-course/course-structure.md +msgid "Day 1 Afternoon (2 hours and 35 minutes, including breaks)" +msgstr "День 1 Полудень (2 години 35 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md src/welcome-day-1-afternoon.md +msgid "35 minutes" +msgstr "35 хвилин" + +#: src/running-the-course/course-structure.md src/welcome-day-1-afternoon.md +#: src/welcome-day-3.md src/welcome-day-3-afternoon.md +#: src/concurrency/welcome-async.md +msgid "55 minutes" +msgstr "55 хвилин" + +#: src/running-the-course/course-structure.md src/welcome-day-1-afternoon.md +#: src/welcome-day-2.md src/welcome-day-3-afternoon.md +msgid "50 minutes" +msgstr "50 хвилин" + +#: src/running-the-course/course-structure.md +msgid "Day 2 Morning (2 hours and 10 minutes, including breaks)" +msgstr "День 2 Ранок (2 години та 10 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md src/hello-world.md +#: src/types-and-values.md src/control-flow-basics.md src/tuples-and-arrays.md +#: src/welcome-day-2.md src/methods-and-traits.md src/std-types.md +#: src/welcome-day-3.md src/borrowing.md src/welcome-day-4.md src/modules.md +#: src/testing.md src/error-handling.md +msgid "3 minutes" +msgstr "3 хвилини" + +#: src/running-the-course/course-structure.md src/welcome-day-2.md +#: src/welcome-day-2-afternoon.md src/welcome-day-3.md +msgid "1 hour" +msgstr "1 година" + +#: src/running-the-course/course-structure.md +msgid "Day 2 Afternoon (3 hours and 15 minutes, including breaks)" +msgstr "День 2 Полудень (3 години та 15 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md src/welcome-day-2-afternoon.md +#: src/welcome-day-4.md +msgid "45 minutes" +msgstr "45 хвилин" + +#: src/running-the-course/course-structure.md src/welcome-day-2-afternoon.md +#: src/concurrency/welcome.md src/concurrency/welcome-async.md +msgid "1 hour and 10 minutes" +msgstr "1 година та 10 хвилин" + +#: src/running-the-course/course-structure.md +msgid "Day 3 Morning (2 hours and 20 minutes, including breaks)" +msgstr "День 3 Ранок (2 години та 20 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md +msgid "Day 3 Afternoon (1 hour and 55 minutes, including breaks)" +msgstr "День 3 Полудень (1 година 55 хвилин, включаючи перерви)" -#: src/running-the-course/course-structure.md:12 +#: src/running-the-course/course-structure.md +msgid "Day 4 Morning (2 hours and 40 minutes, including breaks)" +msgstr "День 4 Ранок (2 години та 40 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md +msgid "Day 4 Afternoon (2 hours and 20 minutes, including breaks)" +msgstr "День 4 Полудень (2 години та 20 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md src/welcome-day-4-afternoon.md +msgid "1 hour and 5 minutes" +msgstr "1 година та 5 хвилин" + +#: src/running-the-course/course-structure.md msgid "Deep Dives" msgstr "Глибоке занурення" -#: src/running-the-course/course-structure.md:14 +#: src/running-the-course/course-structure.md msgid "" "In addition to the 4-day class on Rust Fundamentals, we cover some more " "specialized topics:" @@ -1621,11 +1798,11 @@ msgstr "" "На додаток до 4-денного курсу з основ Rust, ми розглянемо ще кілька " "спеціалізованих тем:" -#: src/running-the-course/course-structure.md:17 +#: src/running-the-course/course-structure.md msgid "Rust in Android" msgstr "Rust в Android" -#: src/running-the-course/course-structure.md:19 +#: src/running-the-course/course-structure.md 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 +1811,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 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 +1825,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 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 +1836,11 @@ msgstr "" "android/build_all.sh`. Прочитайте скрипт, щоб побачити команди, які він " "запускає, і переконайтеся, що вони працюють, коли ви запускаєте їх вручну." -#: src/running-the-course/course-structure.md:35 +#: src/running-the-course/course-structure.md msgid "Rust in Chromium" msgstr "Rust в Chromium" -#: src/running-the-course/course-structure.md:37 +#: src/running-the-course/course-structure.md 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 +1852,7 @@ msgstr "" "Rust у системі збирання `gn` Chromium, залучення сторонніх бібліотек " "(\"крейтів\") і взаємодію з C++." -#: src/running-the-course/course-structure.md:42 +#: src/running-the-course/course-structure.md 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 +1863,11 @@ msgstr "" "але будь-яка збірка буде працювати. Переконайтеся, що ви можете запустити " "веб-переглядач Chromium, який ви побудували." -#: src/running-the-course/course-structure.md:46 +#: src/running-the-course/course-structure.md msgid "Bare-Metal Rust" msgstr "Rust на голому залізі" -#: src/running-the-course/course-structure.md:48 +#: src/running-the-course/course-structure.md 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 +1877,7 @@ msgstr "" "використання Rust для низькорівневої (embedded) розробки. Розглядаються як " "мікроконтролери, так і прикладні процесори." -#: src/running-the-course/course-structure.md:52 +#: src/running-the-course/course-structure.md 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 +1889,11 @@ msgstr "" "встановити кілька пакетів, як описано на [сторінці привітання](../bare-metal." "md)." -#: src/running-the-course/course-structure.md:57 +#: src/running-the-course/course-structure.md msgid "Concurrency in Rust" msgstr "Конкурентність в Rust" -#: src/running-the-course/course-structure.md:59 +#: src/running-the-course/course-structure.md 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 +1901,7 @@ msgstr "" "[Конкурентність в Rust](../concurrency/welcome.md) це цілий день занять з " "класичної, а також `async`/`await` конкурентності." -#: src/running-the-course/course-structure.md:62 +#: src/running-the-course/course-structure.md 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 +1911,39 @@ 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 +msgid "Morning (3 hours and 20 minutes, including breaks)" +msgstr "Ранок (3 години та 20 хвилин, включаючи перерви)" + +#: src/running-the-course/course-structure.md src/pattern-matching.md +#: src/std-traits.md src/smart-pointers.md src/lifetimes.md src/iterators.md +#: src/testing.md src/error-handling.md src/unsafe-rust.md +#: src/concurrency/welcome.md src/concurrency/sync-exercises.md +#: src/concurrency/welcome-async.md src/concurrency/async-exercises.md +msgid "30 minutes" +msgstr "30 хвилин" + +#: src/running-the-course/course-structure.md src/methods-and-traits.md +#: src/std-types.md src/memory-management.md src/borrowing.md +#: src/concurrency/welcome.md src/concurrency/sync-exercises.md +#: src/concurrency/welcome-async.md src/concurrency/async-pitfalls.md +#: src/concurrency/async-exercises.md +msgid "20 minutes" +msgstr "20 хвилин" + +#: src/running-the-course/course-structure.md src/concurrency/welcome.md +msgid "Send and Sync" +msgstr "Send та Sync" + +#: src/running-the-course/course-structure.md +msgid "Afternoon (3 hours and 20 minutes, including breaks)" +msgstr "Полудень (3 години та 20 хвилин, включаючи перерви)" -#: src/running-the-course/course-structure.md:75 +#: src/running-the-course/course-structure.md msgid "Format" msgstr "Формат" -#: src/running-the-course/course-structure.md:77 +#: src/running-the-course/course-structure.md msgid "" "The course is meant to be very interactive and we recommend letting the " "questions drive the exploration of Rust!" @@ -1750,34 +1951,34 @@ msgstr "" "Курс задуманий дуже інтерактивним, і ми рекомендуємо, щоб питання сприяли " "вивченню Rust!" -#: src/running-the-course/keyboard-shortcuts.md:3 +#: src/running-the-course/keyboard-shortcuts.md msgid "There are several useful keyboard shortcuts in mdBook:" msgstr "У mdBook є кілька корисних поєднань клавіш:" -#: src/running-the-course/keyboard-shortcuts.md:5 +#: src/running-the-course/keyboard-shortcuts.md msgid "Arrow-Left: Navigate to the previous page." msgstr "Стрілка вліво: Перехід на попередню сторінку." -#: src/running-the-course/keyboard-shortcuts.md:6 +#: src/running-the-course/keyboard-shortcuts.md msgid "Arrow-Right: Navigate to the next page." msgstr "Стрілка вправо: Перехід до наступної сторінки." -#: src/running-the-course/keyboard-shortcuts.md:7 +#: src/running-the-course/keyboard-shortcuts.md msgid "Ctrl + Enter: Execute the code sample that has focus." msgstr "" "Ctrl + Enter: Виконати приклад коду, який знаходиться у фокусі." -#: src/running-the-course/keyboard-shortcuts.md:8 +#: src/running-the-course/keyboard-shortcuts.md msgid "s: Activate the search bar." msgstr "s: Активувати панель пошуку." -#: src/running-the-course/translations.md:3 +#: src/running-the-course/translations.md msgid "" "The course has been translated into other languages by a set of wonderful " "volunteers:" msgstr "Курс був перекладений іншими мовами групою чудових волонтерів:" -#: src/running-the-course/translations.md:6 +#: src/running-the-course/translations.md msgid "" "[Brazilian Portuguese](https://google.github.io/comprehensive-rust/pt-BR/) " "by [@rastringer](https://github.com/rastringer), [@hugojacob](https://github." @@ -1789,23 +1990,21 @@ msgstr "" "github.com/hugojacob), [@joaovicmendes](https://github.com/joaovicmendes), " "та [@henrif75](https://github.com/henrif75)." -#: src/running-the-course/translations.md:8 +#: src/running-the-course/translations.md msgid "" "[Chinese (Simplified)](https://google.github.io/comprehensive-rust/zh-CN/) " "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 +#: src/running-the-course/translations.md msgid "" "[Chinese (Traditional)](https://google.github.io/comprehensive-rust/zh-TW/) " "by [@hueich](https://github.com/hueich), [@victorhsieh](https://github.com/" @@ -1819,7 +2018,22 @@ msgstr "" "github.com/kuanhungchen), and [@johnathan79717](https://github.com/" "johnathan79717)." -#: src/running-the-course/translations.md:12 +#: src/running-the-course/translations.md +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 msgid "" "[Japanese](https://google.github.io/comprehensive-rust/ja/) by [@CoinEZ-JPN]" "(https://github.com/CoinEZ), [@momotaro1105](https://github.com/" @@ -1831,7 +2045,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 msgid "" "[Korean](https://google.github.io/comprehensive-rust/ko/) by [@keispace]" "(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp), " @@ -1843,7 +2057,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 msgid "" "[Spanish](https://google.github.io/comprehensive-rust/es/) by [@deavid]" "(https://github.com/deavid)." @@ -1851,7 +2065,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 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 +2075,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 +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 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 msgid "Incomplete Translations" msgstr "Незавершені переклади" -#: src/running-the-course/translations.md:22 +#: src/running-the-course/translations.md msgid "" "There is a large number of in-progress translations. We link to the most " "recently updated translations:" @@ -1880,7 +2109,7 @@ msgstr "" "Існує велика кількість незавершених перекладів. Ми посилаємося на останні " "оновлені переклади:" -#: src/running-the-course/translations.md:25 +#: src/running-the-course/translations.md msgid "" "[Arabic](https://google.github.io/comprehensive-rust/ar/) by [@younies]" "(https://github.com/younies)" @@ -1888,7 +2117,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 msgid "" "[Bengali](https://google.github.io/comprehensive-rust/bn/) by [@raselmandol]" "(https://github.com/raselmandol)." @@ -1896,21 +2125,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 msgid "" "[French](https://google.github.io/comprehensive-rust/fr/) by [@KookaS]" "(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) and " @@ -1920,7 +2135,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 msgid "" "[German](https://google.github.io/comprehensive-rust/de/) by [@Throvn]" "(https://github.com/Throvn) and [@ronaldfw](https://github.com/ronaldfw)." @@ -1928,7 +2143,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 msgid "" "[Italian](https://google.github.io/comprehensive-rust/it/) by " "[@henrythebuilder](https://github.com/henrythebuilder) and [@detro](https://" @@ -1938,7 +2153,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 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 +2165,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 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 " @@ -2018,7 +2233,7 @@ msgstr "" 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 " @@ -2036,16 +2251,16 @@ msgstr "" "установки Rust, але він може надати застарілу версію. Тому рекомендується " "встановлювати Rust з офіційного сайту." -#: src/cargo/rust-ecosystem.md:1 +#: src/cargo/rust-ecosystem.md msgid "The Rust Ecosystem" msgstr "Екосистема Rust" -#: src/cargo/rust-ecosystem.md:3 +#: src/cargo/rust-ecosystem.md msgid "" "The Rust ecosystem consists of a number of tools, of which the main ones are:" msgstr "Екосистема Rust складається з ряду інструментів, основними з яких є:" -#: src/cargo/rust-ecosystem.md:5 +#: src/cargo/rust-ecosystem.md msgid "" "`rustc`: the Rust compiler which turns `.rs` files into binaries and other " "intermediate formats." @@ -2053,7 +2268,7 @@ msgstr "" "`rustc`: компілятор Rust, який перетворює файли `.rs` на бінарні файли та " "інші проміжні формати." -#: src/cargo/rust-ecosystem.md:8 +#: src/cargo/rust-ecosystem.md msgid "" "`cargo`: the Rust dependency manager and build tool. Cargo knows how to " "download dependencies, usually hosted on , and it will " @@ -2066,7 +2281,7 @@ msgstr "" "інструментом запуску тестів, який використовується для виконання модульних " "тестів." -#: src/cargo/rust-ecosystem.md:13 +#: src/cargo/rust-ecosystem.md msgid "" "`rustup`: the Rust toolchain installer and updater. This tool is used to " "install and update `rustc` and `cargo` when new versions of Rust are " @@ -2080,14 +2295,14 @@ 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 src/types-and-values/hello-world.md +#: src/references/exclusive.md src/memory-management/move.md +#: src/error-handling/try.md src/android/setup.md +#: src/concurrency/async/async-await.md msgid "Key points:" msgstr "Ключові моменти:" -#: src/cargo/rust-ecosystem.md:23 +#: src/cargo/rust-ecosystem.md msgid "" "Rust has a rapid release schedule with a new release coming out every six " "weeks. New releases maintain backwards compatibility with old releases --- " @@ -2097,12 +2312,12 @@ msgstr "" "Нові версії підтримують зворотну сумісність із старими версіями --- на " "додаток вони надають нові функціональні можливості." -#: src/cargo/rust-ecosystem.md:27 +#: src/cargo/rust-ecosystem.md msgid "" "There are three release channels: \"stable\", \"beta\", and \"nightly\"." msgstr "Існує три канали релізів: \"stable\", \"beta\" та \"nightly\"." -#: src/cargo/rust-ecosystem.md:29 +#: src/cargo/rust-ecosystem.md msgid "" "New features are being tested on \"nightly\", \"beta\" is what becomes " "\"stable\" every six weeks." @@ -2110,7 +2325,7 @@ msgstr "" "Нові функції тестуються на \"nightly\", \"beta\" це те, що стає \"stable\" " "кожні шість тижнів." -#: src/cargo/rust-ecosystem.md:32 +#: src/cargo/rust-ecosystem.md msgid "" "Dependencies can also be resolved from alternative [registries](https://doc." "rust-lang.org/cargo/reference/registries.html), git, folders, and more." @@ -2118,7 +2333,7 @@ msgstr "" "Залежності також можна вирішити за допомогою альтернативних [реєстрів]" "(https://doc.rust-lang.org/cargo/reference/registries.html), git, папок тощо." -#: src/cargo/rust-ecosystem.md:35 +#: src/cargo/rust-ecosystem.md msgid "" "Rust also has [editions](https://doc.rust-lang.org/edition-guide/): the " "current edition is Rust 2021. Previous editions were Rust 2015 and Rust 2018." @@ -2126,13 +2341,13 @@ msgstr "" "Rust також має \\[редакції\\]: поточна редакція це Rust 2021. Попередніми " "редакціями були Rust 2015 та Rust 2018." -#: src/cargo/rust-ecosystem.md:38 +#: src/cargo/rust-ecosystem.md msgid "" "The editions are allowed to make backwards incompatible changes to the " "language." msgstr "Редакціям дозволено вносити зворотно-несумісні зміни до мови." -#: src/cargo/rust-ecosystem.md:41 +#: src/cargo/rust-ecosystem.md msgid "" "To prevent breaking code, editions are opt-in: you select the edition for " "your crate via the `Cargo.toml` file." @@ -2140,7 +2355,7 @@ msgstr "" "Щоб уникнути збоїв коду, редакцію для свого пакета можна явно вказати у " "файлі `Cargo.toml`." -#: src/cargo/rust-ecosystem.md:44 +#: src/cargo/rust-ecosystem.md msgid "" "To avoid splitting the ecosystem, Rust compilers can mix code written for " "different editions." @@ -2148,7 +2363,7 @@ msgstr "" "Щоб уникнути поділу екосистеми, компілятор Rust може змішувати код, " "написаний для різних редакцій." -#: src/cargo/rust-ecosystem.md:47 +#: src/cargo/rust-ecosystem.md msgid "" "Mention that it is quite rare to ever use the compiler directly not through " "`cargo` (most users never do)." @@ -2156,7 +2371,7 @@ msgstr "" "Варто нагадати, що використання компілятора безпосередньо, а не через " "`cargo`, є рідкісним явищем (більшість користувачів ніколи цього не роблять)." -#: src/cargo/rust-ecosystem.md:50 +#: src/cargo/rust-ecosystem.md msgid "" "It might be worth alluding that Cargo itself is an extremely powerful and " "comprehensive tool. It is capable of many advanced features including but " @@ -2166,22 +2381,22 @@ msgstr "" "інструментом. Він має багато додаткових функцій, включаючи, але не " "обмежуючись:" -#: src/cargo/rust-ecosystem.md:53 +#: src/cargo/rust-ecosystem.md msgid "Project/package structure" msgstr "Структуру проекту/пакета" -#: src/cargo/rust-ecosystem.md:54 +#: src/cargo/rust-ecosystem.md msgid "[workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html)" msgstr "" "[робочі області](https://doc.rust-lang.org/cargo/reference/workspaces.html)" -#: src/cargo/rust-ecosystem.md:55 +#: src/cargo/rust-ecosystem.md msgid "Dev Dependencies and Runtime Dependency management/caching" msgstr "" "Управління/кешування залежностями для розробки (dev) та часу виконання " "(runtime)" -#: src/cargo/rust-ecosystem.md:56 +#: src/cargo/rust-ecosystem.md msgid "" "[build scripting](https://doc.rust-lang.org/cargo/reference/build-scripts." "html)" @@ -2189,7 +2404,7 @@ msgstr "" "[сценарії побудови](https://doc.rust-lang.org/cargo/reference/build-scripts." "html)" -#: src/cargo/rust-ecosystem.md:57 +#: src/cargo/rust-ecosystem.md msgid "" "[global installation](https://doc.rust-lang.org/cargo/commands/cargo-install." "html)" @@ -2197,7 +2412,7 @@ msgstr "" "[глобальна установка](https://doc.rust-lang.org/cargo/commands/cargo-install." "html)" -#: src/cargo/rust-ecosystem.md:58 +#: src/cargo/rust-ecosystem.md msgid "" "It is also extensible with sub command plugins as well (such as [cargo " "clippy](https://github.com/rust-lang/rust-clippy))." @@ -2205,17 +2420,17 @@ msgstr "" "Він також розширюється за допомогою плагінів підкоманд (таких як [cargo " "clippy](https://github.com/rust-lang/rust-clippy))." -#: src/cargo/rust-ecosystem.md:60 +#: src/cargo/rust-ecosystem.md msgid "" "Read more from the [official Cargo Book](https://doc.rust-lang.org/cargo/)" msgstr "" "Докладніше читайте в [офіційній Cargo Book](https://doc.rust-lang.org/cargo/)" -#: src/cargo/code-samples.md:1 +#: src/cargo/code-samples.md msgid "Code Samples in This Training" msgstr "Приклади коду в цьому курсі" -#: src/cargo/code-samples.md:3 +#: src/cargo/code-samples.md msgid "" "For this training, we will mostly explore the Rust language through examples " "which can be executed through your browser. This makes the setup much easier " @@ -2225,7 +2440,7 @@ msgstr "" "бути виконані у вашому браузері. Це значно спрощує налаштування та " "забезпечує однаковий досвід для всіх." -#: src/cargo/code-samples.md:7 +#: src/cargo/code-samples.md msgid "" "Installing Cargo is still encouraged: it will make it easier for you to do " "the exercises. On the last day, we will do a larger exercise which shows you " @@ -2235,15 +2450,15 @@ msgstr "" "вправ. В останній день ми виконаємо більш масштабну вправу, яка покаже вам " "як працювати із залежностями, і для цього вам знадобиться Cargo." -#: src/cargo/code-samples.md:11 +#: src/cargo/code-samples.md msgid "The code blocks in this course are fully interactive:" msgstr "Блоки коду в цьому курсі є повністю інтерактивними:" -#: src/cargo/code-samples.md:15 src/cargo/running-locally.md:46 +#: src/cargo/code-samples.md src/cargo/running-locally.md msgid "\"Edit me!\"" msgstr "\"Відредагуте мене!\"" -#: src/cargo/code-samples.md:19 +#: src/cargo/code-samples.md msgid "" "You can use Ctrl + Enter to execute the code when focus is in the " "text box." @@ -2251,7 +2466,7 @@ msgstr "" "Ви можете використовувати Ctrl + Enter для виконання коду, коли " "фокус введення знаходиться в текстовому полі." -#: src/cargo/code-samples.md:24 +#: src/cargo/code-samples.md msgid "" "Most code samples are editable like shown above. A few code samples are not " "editable for various reasons:" @@ -2259,7 +2474,7 @@ msgstr "" "Більшість прикладів коду доступні для редагування, як показано вище. Кілька " "прикладів коду недоступні для редагування з різних причин:" -#: src/cargo/code-samples.md:27 +#: src/cargo/code-samples.md msgid "" "The embedded playgrounds cannot execute unit tests. Copy-paste the code and " "open it in the real Playground to demonstrate unit tests." @@ -2268,7 +2483,7 @@ msgstr "" "Скопіюйте код і відкрийте його в справжньому Playground, щоб " "продемонструвати модульні тести." -#: src/cargo/code-samples.md:30 +#: src/cargo/code-samples.md msgid "" "The embedded playgrounds lose their state the moment you navigate away from " "the page! This is the reason that the students should solve the exercises " @@ -2278,11 +2493,11 @@ msgstr "" "ви йдете зі сторінки! Саме з цієї причини учні повинні виконувати вправи, " "використовуючи локальну установку Rust або Rust Playground." -#: src/cargo/running-locally.md:1 +#: src/cargo/running-locally.md msgid "Running Code Locally with Cargo" msgstr "Запуск коду локально за допомогою Cargo" -#: src/cargo/running-locally.md:3 +#: src/cargo/running-locally.md msgid "" "If you want to experiment with the code on your own system, then you will " "need to first install Rust. Do this by following the [instructions in the " @@ -2296,7 +2511,7 @@ msgstr "" "вашій системі з'являться інструменти `rustc` та `cargo`. На момент написання " "статті останній стабільний випуск Rust має такі версії:" -#: src/cargo/running-locally.md:16 +#: src/cargo/running-locally.md msgid "" "You can use any later version too since Rust maintains backwards " "compatibility." @@ -2304,7 +2519,7 @@ msgstr "" "Ви також можете використовувати будь-яку пізнішу версію, оскільки Rust " "підтримує зворотну сумісність." -#: src/cargo/running-locally.md:18 +#: src/cargo/running-locally.md msgid "" "With this in place, follow these steps to build a Rust binary from one of " "the examples in this training:" @@ -2312,27 +2527,27 @@ msgstr "" "Після цього виконайте такі кроки, щоб зібрати виконуваний файл на основі " "одного з прикладів у цьому курсі:" -#: src/cargo/running-locally.md:21 +#: src/cargo/running-locally.md msgid "Click the \"Copy to clipboard\" button on the example you want to copy." msgstr "" "Натисніть кнопку \"Copy to clipboard\" на прикладі коду, який потрібно " "скопіювати." -#: src/cargo/running-locally.md:23 +#: src/cargo/running-locally.md msgid "" "Use `cargo new exercise` to create a new `exercise/` directory for your code:" msgstr "" "Використовуйте `cargo new exercise`, щоб створити нову директорію `exercise/" "` для вашого коду:" -#: src/cargo/running-locally.md:30 +#: src/cargo/running-locally.md msgid "" "Navigate into `exercise/` and use `cargo run` to build and run your binary:" msgstr "" "Перейдіть в директорію `exercise/` і виконайте `cargo run` для побудови та " "запуску виконуваного файлу:" -#: src/cargo/running-locally.md:41 +#: src/cargo/running-locally.md msgid "" "Replace the boiler-plate code in `src/main.rs` with your own code. For " "example, using the example on the previous page, make `src/main.rs` look like" @@ -2341,13 +2556,13 @@ msgstr "" "використовуючи приклад коду з попередньої сторінки, зробіть `src/main.rs` " "схожим на" -#: src/cargo/running-locally.md:50 +#: src/cargo/running-locally.md msgid "Use `cargo run` to build and run your updated binary:" msgstr "" "Використовуйте `cargo run` для побудови та запуску оновленого виконуваного " "файлу:" -#: src/cargo/running-locally.md:60 +#: src/cargo/running-locally.md msgid "" "Use `cargo check` to quickly check your project for errors, use `cargo " "build` to compile it without running it. You will find the output in `target/" @@ -2360,7 +2575,7 @@ msgstr "" "Використовуйте `cargo build --release` для створення оптимізованої фінальної " "збірки в `target/release/`." -#: src/cargo/running-locally.md:65 +#: src/cargo/running-locally.md msgid "" "You can add dependencies for your project by editing `Cargo.toml`. When you " "run `cargo` commands, it will automatically download and compile missing " @@ -2370,7 +2585,7 @@ msgstr "" "toml`. Коли ви запустите команду `cargo`, вона автоматично завантажить і " "скомпілює відсутні залежності для вас." -#: src/cargo/running-locally.md:73 +#: src/cargo/running-locally.md msgid "" "Try to encourage the class participants to install Cargo and use a local " "editor. It will make their life easier since they will have a normal " @@ -2380,12 +2595,6 @@ 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 msgid "Welcome to Day 1" msgstr "Ласкаво просимо до Дня 1" @@ -2427,13 +2636,13 @@ msgstr "Зіставлення шаблонів: деструктуризаці 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 +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 msgid "Please remind the students that:" @@ -2505,6 +2714,10 @@ msgstr "" "вказаний тут, є рекомендацією для того, щоб тримати курс за розкладом. Не " "соромтеся бути гнучкими і вносити корективи за потреби!" +#: src/hello-world.md src/concurrency/send-sync.md +msgid "This segment should take about 15 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 15 хвилин. Він містить:" + #: 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 @@ -2516,25 +2729,26 @@ msgstr "" #: 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 +msgid "Slide" +msgstr "Слайд" + +#: src/hello-world.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/modules.md +#: src/unsafe-rust.md src/concurrency/channels.md src/concurrency/send-sync.md +#: src/concurrency/shared-state.md src/concurrency/async.md +#: src/concurrency/async-control-flow.md src/concurrency/async-pitfalls.md +msgid "10 minutes" +msgstr "10 хвилин" + +#: src/hello-world.md src/control-flow-basics.md src/user-defined-types.md +#: src/memory-management.md src/concurrency/channels.md +#: src/concurrency/send-sync.md +msgid "2 minutes" +msgstr "2 хвилини" + +#: src/hello-world/what-is-rust.md 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 +2756,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 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 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 msgid "" "Rust supports many [platforms and architectures](https://doc.rust-lang.org/" "nightly/rustc/platform-support.html):" @@ -2559,77 +2773,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 msgid "x86, ARM, WebAssembly, ..." msgstr "x86, ARM, WebAssembly, ..." -#: src/hello-world/what-is-rust.md:14 +#: src/hello-world/what-is-rust.md msgid "Linux, Mac, Windows, ..." msgstr "Linux, Mac, Windows, ..." -#: src/hello-world/what-is-rust.md:15 +#: src/hello-world/what-is-rust.md 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 msgid "firmware and boot loaders," msgstr "прошивки та завантажувачі," -#: src/hello-world/what-is-rust.md:17 +#: src/hello-world/what-is-rust.md msgid "smart displays," msgstr "розумні дисплеї," -#: src/hello-world/what-is-rust.md:18 +#: src/hello-world/what-is-rust.md msgid "mobile phones," msgstr "мобільні телефони," -#: src/hello-world/what-is-rust.md:19 +#: src/hello-world/what-is-rust.md msgid "desktops," msgstr "робочі станції," -#: src/hello-world/what-is-rust.md:20 +#: src/hello-world/what-is-rust.md msgid "servers." msgstr "сервери." -#: src/hello-world/what-is-rust.md:24 +#: src/hello-world/what-is-rust.md 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 msgid "High flexibility." msgstr "Висока гнучкість." -#: src/hello-world/what-is-rust.md:27 +#: src/hello-world/what-is-rust.md msgid "High level of control." msgstr "Високий рівень контролю." -#: src/hello-world/what-is-rust.md:28 +#: src/hello-world/what-is-rust.md 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 msgid "Has no runtime or garbage collection." msgstr "Не має часу виконання або збирання сміття." -#: src/hello-world/what-is-rust.md:30 +#: src/hello-world/what-is-rust.md 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 msgid "Some unique selling points of Rust:" msgstr "Деякі унікальні переваги Rust:" -#: src/hello-world/benefits.md:9 +#: src/hello-world/benefits.md msgid "" "_Compile time memory safety_ - whole classes of memory bugs are prevented at " "compile time" @@ -2637,35 +2843,35 @@ msgstr "" "_Безпека пам'яті під час компіляції_ - цілі класи помилок пам'яті " "запобігаються на етапі компіляції" -#: src/hello-world/benefits.md:11 +#: src/hello-world/benefits.md msgid "No uninitialized variables." msgstr "Немає неініціалізованих змінних." -#: src/hello-world/benefits.md:12 +#: src/hello-world/benefits.md msgid "No double-frees." msgstr "Ніяких подвійних звільнень." -#: src/hello-world/benefits.md:13 +#: src/hello-world/benefits.md msgid "No use-after-free." msgstr "Немає використання після звільнення." -#: src/hello-world/benefits.md:14 +#: src/hello-world/benefits.md msgid "No `NULL` pointers." msgstr "Немає вказівників `NULL`." -#: src/hello-world/benefits.md:15 +#: src/hello-world/benefits.md msgid "No forgotten locked mutexes." msgstr "Немає забутих заблокованих м'ютексів." -#: src/hello-world/benefits.md:16 +#: src/hello-world/benefits.md msgid "No data races between threads." msgstr "Немає перегонів даних між потоками." -#: src/hello-world/benefits.md:17 +#: src/hello-world/benefits.md msgid "No iterator invalidation." msgstr "Немає недійсності ітератора." -#: src/hello-world/benefits.md:19 +#: src/hello-world/benefits.md msgid "" "_No undefined runtime behavior_ - what a Rust statement does is never left " "unspecified" @@ -2673,16 +2879,16 @@ msgstr "" "_Ніякої невизначеної поведінки під час виконання_ - те, що робить оператор " "Rust, ніколи не залишається невизначеним" -#: src/hello-world/benefits.md:21 +#: src/hello-world/benefits.md msgid "Array access is bounds checked." msgstr "Доступ до масиву перевірено на межі." -#: src/hello-world/benefits.md:22 +#: src/hello-world/benefits.md msgid "Integer overflow is defined (panic or wrap-around)." msgstr "" "Поведінка цілочисельного переповнення визначена (паніка або обертання)." -#: src/hello-world/benefits.md:24 +#: src/hello-world/benefits.md msgid "" "_Modern language features_ - as expressive and ergonomic as higher-level " "languages" @@ -2690,39 +2896,39 @@ msgstr "" "_Можливості сучасної мови_ - така ж виразна та ергономічна, як і мови вищих " "рівнів" -#: src/hello-world/benefits.md:26 +#: src/hello-world/benefits.md msgid "Enums and pattern matching." msgstr "Переліки та зіставлення шаблонів." -#: src/hello-world/benefits.md:27 +#: src/hello-world/benefits.md msgid "Generics." msgstr "Узагальнені типи." -#: src/hello-world/benefits.md:28 +#: src/hello-world/benefits.md msgid "No overhead FFI." msgstr "FFI без накладних витрат." -#: src/hello-world/benefits.md:29 +#: src/hello-world/benefits.md msgid "Zero-cost abstractions." msgstr "Абстракції без витрат." -#: src/hello-world/benefits.md:30 +#: src/hello-world/benefits.md msgid "Great compiler errors." msgstr "Чудово деталізовані помилки компілятора." -#: src/hello-world/benefits.md:31 +#: src/hello-world/benefits.md msgid "Built-in dependency manager." msgstr "Вбудований менеджер залежностей." -#: src/hello-world/benefits.md:32 +#: src/hello-world/benefits.md msgid "Built-in support for testing." msgstr "Вбудована підтримка тестування." -#: src/hello-world/benefits.md:33 +#: src/hello-world/benefits.md msgid "Excellent Language Server Protocol support." msgstr "Чудова підтримка протоколу мовного сервера (LSP)." -#: src/hello-world/benefits.md:37 +#: src/hello-world/benefits.md msgid "" "Do not spend much time here. All of these points will be covered in more " "depth later." @@ -2730,7 +2936,7 @@ msgstr "" "Не витрачайте тут багато часу. Всі ці пункти будуть розглянуті більш " "детально пізніше." -#: src/hello-world/benefits.md:40 +#: src/hello-world/benefits.md 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 +2944,7 @@ msgstr "" "Обов’язково запитайте клас, з якими мовами вони мають досвід. Залежно від " "відповіді ви можете виділити різні особливості Rust:" -#: src/hello-world/benefits.md:43 +#: src/hello-world/benefits.md 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 +2957,7 @@ msgstr "" "сучасну мову з такими конструкціями, як зіставлення шаблонів і вбудоване " "керування залежностями." -#: src/hello-world/benefits.md:48 +#: src/hello-world/benefits.md 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 +2970,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 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 +2982,7 @@ msgstr "" "курсі. Спробуйте запустити програму \"hello-world\", з якої він " "починається. Вона має декілька зручних можливостей:" -#: src/hello-world/playground.md:12 +#: src/hello-world/playground.md msgid "" "Under \"Tools\", use the `rustfmt` option to format your code in the " "\"standard\" way." @@ -2792,7 +2990,7 @@ msgstr "" "У розділі \"Інструменти\" скористайтеся опцією `rustfmt` для форматування " "вашого коду у \"стандартний\" спосіб." -#: src/hello-world/playground.md:15 +#: src/hello-world/playground.md msgid "" "Rust has two main \"profiles\" for generating code: Debug (extra runtime " "checks, less optimization) and Release (fewer runtime checks, lots of " @@ -2803,7 +3001,7 @@ msgstr "" "перевірок під час виконання, багато оптимізацій). Вони доступні у розділі " "\"Налагодження\" у верхній частині вікна." -#: src/hello-world/playground.md:19 +#: src/hello-world/playground.md msgid "" "If you're interested, use \"ASM\" under \"...\" to see the generated " "assembly code." @@ -2811,7 +3009,7 @@ msgstr "" "Якщо вам цікаво, скористайтеся командою \"ASM\" в \"...\", щоб переглянути " "згенерований асемблерний код." -#: src/hello-world/playground.md:24 +#: src/hello-world/playground.md 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 +3022,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 src/control-flow-basics.md src/modules.md +msgid "This segment should take about 40 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 40 хвилин. Він містить:" + +#: src/types-and-values/hello-world.md 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 msgid "\"Hello 🌍!\"" msgstr "\"Привіт 🌍!\"" -#: src/types-and-values/hello-world.md:16 +#: src/types-and-values/hello-world.md msgid "What you see:" msgstr "Що ви бачите:" -#: src/types-and-values/hello-world.md:18 +#: src/types-and-values/hello-world.md msgid "Functions are introduced with `fn`." msgstr "Функції вводяться за допомогою `fn`." -#: src/types-and-values/hello-world.md:19 +#: src/types-and-values/hello-world.md 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 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 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 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 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 +3072,7 @@ msgstr "" "Вони побачать масу цього протягом наступних чотирьох днів, тож ми починаємо " "з чогось малого та знайомого." -#: src/types-and-values/hello-world.md:31 +#: src/types-and-values/hello-world.md 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 +3080,11 @@ msgstr "" "Rust дуже схожий на інші традиціїні мови як C/C++/Java. Це навмисно, і він " "не намагається винайти щось заново, якщо це не є абсолютно необхідним." -#: src/types-and-values/hello-world.md:34 +#: src/types-and-values/hello-world.md 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 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 +3093,7 @@ msgstr "" "аргументів (немає [перевантаження](basic-syntax/functions-interlude.md) " "функцій)." -#: src/types-and-values/hello-world.md:39 +#: src/types-and-values/hello-world.md 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 +3105,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 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 +3118,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 msgid "" "Rust provides type safety via static typing. Variable bindings are made with " "`let`:" @@ -2955,12 +3126,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 src/control-flow-basics/loops/for.md +#: src/control-flow-basics/blocks-and-scopes.md msgid "\"x: {x}\"" msgstr "\"x: {x}\"" -#: src/types-and-values/variables.md:14 +#: src/types-and-values/variables.md msgid "" "// x = 20;\n" " // println!(\"x: {x}\");\n" @@ -2968,7 +3139,7 @@ msgstr "" "// x = 20;\n" " // println!(\"x: {x}\");\n" -#: src/types-and-values/variables.md:21 +#: src/types-and-values/variables.md msgid "" "Uncomment the `x = 20` to demonstrate that variables are immutable by " "default. Add the `mut` keyword to allow changes." @@ -2976,7 +3147,7 @@ msgstr "" "Відкоментуйте `x = 20`, щоб продемонструвати, що змінні за замовчуванням є " "незмінними. Додайте ключове слово `mut`, щоб дозволити зміну." -#: src/types-and-values/variables.md:24 +#: src/types-and-values/variables.md 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 +3157,7 @@ msgstr "" "виведення типів (розглядається пізніше) дозволяє програмісту у багатьох " "випадках не вказувати його." -#: src/types-and-values/values.md:7 +#: src/types-and-values/values.md msgid "" "Here are some basic built-in types, and the syntax for literal values of " "each type." @@ -2994,99 +3165,99 @@ msgstr "" "Нижче наведено деякі основні вбудовані типи та синтаксис для літеральних " "значень кожного типу." -#: src/types-and-values/values.md:10 src/unsafe-rust/exercise.md:20 +#: src/types-and-values/values.md src/unsafe-rust/exercise.md msgid "Types" msgstr "Типи" -#: src/types-and-values/values.md:10 +#: src/types-and-values/values.md msgid "Literals" msgstr "Літерали" -#: src/types-and-values/values.md:12 +#: src/types-and-values/values.md msgid "Signed integers" msgstr "Цілі числа зі знаком" -#: src/types-and-values/values.md:12 +#: src/types-and-values/values.md 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 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 msgid "Unsigned integers" msgstr "Беззнакові цілі числа" -#: src/types-and-values/values.md:13 +#: src/types-and-values/values.md 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 msgid "`0`, `123`, `10_u16`" msgstr "`0`, `123`, `10_u16`" -#: src/types-and-values/values.md:14 +#: src/types-and-values/values.md msgid "Floating point numbers" msgstr "Числа з плаваючою комою" -#: src/types-and-values/values.md:14 +#: src/types-and-values/values.md msgid "`f32`, `f64`" msgstr "`f32`, `f64`" -#: src/types-and-values/values.md:14 +#: src/types-and-values/values.md 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 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 src/android/aidl/types/primitives.md msgid "`char`" msgstr "`char`" -#: src/types-and-values/values.md:15 +#: src/types-and-values/values.md msgid "`'a'`, `'α'`, `'∞'`" msgstr "`'a'`, `'α'`, `'∞'`" -#: src/types-and-values/values.md:16 +#: src/types-and-values/values.md msgid "Booleans" msgstr "Логічні значення" -#: src/types-and-values/values.md:16 src/android/aidl/types/primitives.md:7 +#: src/types-and-values/values.md src/android/aidl/types/primitives.md msgid "`bool`" msgstr "`bool`" -#: src/types-and-values/values.md:16 +#: src/types-and-values/values.md msgid "`true`, `false`" msgstr "`true`, `false`" -#: src/types-and-values/values.md:18 +#: src/types-and-values/values.md msgid "The types have widths as follows:" msgstr "Типи мають наступну ширину:" -#: src/types-and-values/values.md:20 +#: src/types-and-values/values.md 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 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 msgid "`char` is 32 bits wide," msgstr "`char` має ширину 32 біти," -#: src/types-and-values/values.md:23 +#: src/types-and-values/values.md msgid "`bool` is 8 bits wide." msgstr "`bool` має ширину 8 біт." -#: src/types-and-values/values.md:27 +#: src/types-and-values/values.md 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 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 +3267,11 @@ msgstr "" "розбірливості. Отже, `1_000` можна записати як `1000` (або `10_00`), а " "`123_i64` можна записати як `123i64`." -#: src/types-and-values/arithmetic.md:13 +#: src/types-and-values/arithmetic.md msgid "\"result: {}\"" msgstr "\"результат: {}\"" -#: src/types-and-values/arithmetic.md:19 +#: src/types-and-values/arithmetic.md 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 +3281,11 @@ msgstr "" "повинно бути зрозумілим: вона отримує три цілих числа і повертає ціле число. " "Функції буде розглянуто більш детально пізніше." -#: src/types-and-values/arithmetic.md:23 +#: src/types-and-values/arithmetic.md 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 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 +3295,7 @@ msgstr "" "чисел _зі знаком_ фактично не визначено, і може робити невідомі речі під час " "виконання. У Rust воно визначене." -#: src/types-and-values/arithmetic.md:29 +#: src/types-and-values/arithmetic.md 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 +3309,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 msgid "" "In fact, the compiler will detect overflow of constant expressions, which is " "why the example requires a separate function." @@ -3146,11 +3317,11 @@ msgstr "" "Насправді, компілятор виявить переповнення константних виразів, тому приклад " "вимагає окремої функції." -#: src/types-and-values/inference.md:7 +#: src/types-and-values/inference.md 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 msgid "" "This slide demonstrates how the Rust compiler infers types based on " "constraints given by variable declarations and usages." @@ -3158,7 +3329,7 @@ msgstr "" "На цьому слайді показано, як компілятор Rust виводить типи на основі " "обмежень, заданих оголошеннями змінних та їх використанням." -#: src/types-and-values/inference.md:35 +#: src/types-and-values/inference.md 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 +3343,7 @@ msgstr "" "типу. Компілятор виконує роботу за нас і допомагає нам писати більш стислий " "код." -#: src/types-and-values/inference.md:40 +#: src/types-and-values/inference.md 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 +3354,11 @@ msgstr "" "`{integer}`. Подібно до цього, літерали з плаваючою комою за замовчуванням " "мають тип `f64`." -#: src/types-and-values/inference.md:49 +#: src/types-and-values/inference.md 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 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 +3367,7 @@ msgstr "" "Послідовність Фібоначчі починається з `[0,1]`. Для n>1 n-те число Фібоначчі " "обчислюється рекурсивно як сума n-1-го та n-2-го чисел Фібоначчі." -#: src/types-and-values/exercise.md:10 +#: src/types-and-values/exercise.md msgid "" "Write a function `fib(n)` that calculates the n'th Fibonacci number. When " "will this function panic?" @@ -3211,36 +3375,40 @@ msgstr "" "Напишіть функцію `fib(n)`, яка обчислює n-те число Фібоначчі. Коли ця " "функція запанікує?" -#: src/types-and-values/exercise.md:16 +#: src/types-and-values/exercise.md 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 src/control-flow-basics/exercise.md msgid "\"Implement this\"" msgstr "\"Реалізуйте це\"" -#: src/types-and-values/exercise.md:19 +#: src/types-and-values/exercise.md 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 src/types-and-values/solution.md 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 +msgid "if Expressions" +msgstr "Вирази if" + +#: src/control-flow-basics.md src/pattern-matching.md src/concurrency/async.md +#: src/concurrency/async-control-flow.md +msgid "4 minutes" +msgstr "4 хвилини" -#: src/control-flow-basics/if.md:5 +#: src/control-flow-basics.md +msgid "break and continue" +msgstr "break та continue" + +#: src/control-flow-basics/if.md msgid "`if` expressions" msgstr "Вирази `if`" -#: src/control-flow-basics/if.md:7 +#: src/control-flow-basics/if.md 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 +3417,19 @@ msgstr "" "expressions/if-expr.html#if-expressions) так само, як і вирази `if` в інших " "мовах:" -#: src/control-flow-basics/if.md:15 +#: src/control-flow-basics/if.md msgid "\"zero!\"" msgstr "\"нуль!\"" -#: src/control-flow-basics/if.md:17 +#: src/control-flow-basics/if.md msgid "\"biggish\"" msgstr "\"великий\"" -#: src/control-flow-basics/if.md:19 +#: src/control-flow-basics/if.md msgid "\"huge\"" msgstr "\"величезний\"" -#: src/control-flow-basics/if.md:24 +#: src/control-flow-basics/if.md 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 +3437,19 @@ msgstr "" "Крім того, ви можете використовувати `if` як вираз. Останній вираз кожного " "блоку стає значенням виразу `if`:" -#: src/control-flow-basics/if.md:30 +#: src/control-flow-basics/if.md msgid "\"small\"" msgstr "\"маленький\"" -#: src/control-flow-basics/if.md:30 +#: src/control-flow-basics/if.md msgid "\"large\"" msgstr "\"великий\"" -#: src/control-flow-basics/if.md:31 +#: src/control-flow-basics/if.md msgid "\"number size: {}\"" msgstr "\"розмір числа: {}\"" -#: src/control-flow-basics/if.md:37 +#: src/control-flow-basics/if.md 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 +3459,7 @@ msgstr "" "розгалужень повинні мати той самий тип. Покажіть, що станеться, якщо додати " "`;` після `\"маленький\"` у другому прикладі." -#: src/control-flow-basics/if.md:41 +#: src/control-flow-basics/if.md 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 +3471,15 @@ msgstr "" "символом `;`. Видаліть `;` перед `println!`, щоб побачити помилку " "компілятора." -#: src/control-flow-basics/loops.md:7 +#: src/control-flow-basics/loops.md 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 msgid "`while`" msgstr "`while`" -#: src/control-flow-basics/loops.md:11 +#: src/control-flow-basics/loops.md 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,11 +3489,11 @@ msgstr "" "expr.html#predicate-loops) працює так само, як і в інших мовах, виконуючи " "тіло циклу доти, доки умова виконується." -#: src/control-flow-basics/loops.md:22 +#: src/control-flow-basics/loops.md msgid "\"Final x: {x}\"" msgstr "\"Final x: {x}\"" -#: src/control-flow-basics/loops/for.md:3 +#: src/control-flow-basics/loops/for.md msgid "" "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) iterates " "over ranges of values or the items in a collection:" @@ -3333,11 +3501,11 @@ msgstr "" "Цикл [`for`](https://doc.rust-lang.org/std/keyword.for.html) виконує " "ітерації над діапазонами значень або елементами колекції:" -#: src/control-flow-basics/loops/for.md:13 +#: src/control-flow-basics/loops/for.md msgid "\"elem: {elem}\"" msgstr "\"elem: {elem}\"" -#: src/control-flow-basics/loops/for.md:20 +#: src/control-flow-basics/loops/for.md msgid "" "Under the hood `for` loops use a concept called \"iterators\" to handle " "iterating over different kinds of ranges/collections. Iterators will be " @@ -3347,7 +3515,7 @@ msgstr "" "\"ітератори\", для обробки ітерацій над різними типами діапазонів/колекцій. " "Ітератори буде розглянуто більш детально пізніше." -#: src/control-flow-basics/loops/for.md:23 +#: src/control-flow-basics/loops/for.md msgid "" "Note that the first `for` loop only iterates to `4`. Show the `1..=5` syntax " "for an inclusive range." @@ -3355,7 +3523,7 @@ msgstr "" "Зверніть увагу, що перший цикл `for` виконує ітерацію тільки до `4`. " "Покажіть синтаксис `1..=5` для включеного діапазону." -#: src/control-flow-basics/loops/loop.md:3 +#: src/control-flow-basics/loops/loop.md msgid "" "The [`loop` statement](https://doc.rust-lang.org/std/keyword.loop.html) just " "loops forever, until a `break`." @@ -3363,11 +3531,11 @@ msgstr "" "Оператор [`loop`](https://doc.rust-lang.org/std/keyword.loop.html) просто " "повторюється до нескінченності, поки не трапиться `break`." -#: src/control-flow-basics/loops/loop.md:11 +#: src/control-flow-basics/loops/loop.md msgid "\"{i}\"" msgstr "\"{i}\"" -#: src/control-flow-basics/break-continue.md:7 +#: src/control-flow-basics/break-continue.md 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 +3544,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 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 +3556,16 @@ 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/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/control-flow-basics/break-continue.md src/std-traits/exercise.md +#: src/std-traits/solution.md src/smart-pointers/trait-objects.md +#: src/borrowing/interior-mutability.md src/modules/exercise.md +#: src/modules/solution.md src/android/build-rules/library.md +#: src/android/interoperability/cpp/rust-bridge.md +#: src/concurrency/async-pitfalls/cancellation.md msgid "\"{}\"" msgstr "\"{}\"" -#: src/control-flow-basics/break-continue.md:33 +#: src/control-flow-basics/break-continue.md 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` " @@ -3411,7 +3578,7 @@ msgstr "" "циклів `while` і `for`, які також можуть повертати значення при невиконанні " "умови)." -#: src/control-flow-basics/break-continue/labels.md:3 +#: src/control-flow-basics/break-continue/labels.md msgid "" "Both `continue` and `break` can optionally take a label argument which is " "used to break out of nested loops:" @@ -3419,23 +3586,23 @@ msgstr "" "І `continue`, і `break` можуть додатково приймати аргумент мітки, який " "використовується для виходу з вкладених циклів:" -#: src/control-flow-basics/break-continue/labels.md:19 +#: src/control-flow-basics/break-continue/labels.md msgid "\"elements searched: {elements_searched}\"" msgstr "\"елементів переглянуто: {elements_searched}\"" -#: src/control-flow-basics/break-continue/labels.md:25 +#: src/control-flow-basics/break-continue/labels.md msgid "Labeled break also works on arbitrary blocks, e.g." msgstr "Позначене переривання також працює на довільних блоках, наприклад" -#: src/control-flow-basics/break-continue/labels.md:29 +#: src/control-flow-basics/break-continue/labels.md msgid "\"This line gets skipped\"" msgstr "\"Цей рядок пропускається\"" -#: src/control-flow-basics/blocks-and-scopes.md:7 +#: src/control-flow-basics/blocks-and-scopes.md msgid "Blocks" msgstr "Блоки" -#: src/control-flow-basics/blocks-and-scopes.md:9 +#: src/control-flow-basics/blocks-and-scopes.md 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 +3612,11 @@ msgstr "" "Кожен блок має значення і тип, які відповідають значенню і типу останнього " "виразу в блоці:" -#: src/control-flow-basics/blocks-and-scopes.md:18 +#: src/control-flow-basics/blocks-and-scopes.md msgid "\"y: {y}\"" msgstr "\"y: {y}\"" -#: src/control-flow-basics/blocks-and-scopes.md:25 +#: src/control-flow-basics/blocks-and-scopes.md msgid "" "If the last expression ends with `;`, then the resulting value and type is " "`()`." @@ -3457,7 +3624,7 @@ msgstr "" "Якщо останній вираз закінчується символом `;`, то результуюче значення і тип " "буде `()`." -#: src/control-flow-basics/blocks-and-scopes.md:29 +#: src/control-flow-basics/blocks-and-scopes.md 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`." @@ -3466,11 +3633,11 @@ msgstr "" "блоці. Наприклад, додаванням/видаленням крапки з комою або використанням " "`return`." -#: src/control-flow-basics/blocks-and-scopes/scopes.md:3 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "A variable's scope is limited to the enclosing block." msgstr "Область видимості змінної обмежується блоком, що її охоплює." -#: src/control-flow-basics/blocks-and-scopes/scopes.md:5 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "You can shadow variables, both those from outer scopes and variables from " "the same scope:" @@ -3478,29 +3645,28 @@ msgstr "" "Ви можете затіняти змінні, як із зовнішніх областей, так і змінні з тієї ж " "області:" -#: src/control-flow-basics/blocks-and-scopes/scopes.md:11 +#: src/control-flow-basics/blocks-and-scopes/scopes.md 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/control-flow-basics/blocks-and-scopes/scopes.md src/generics/exercise.md +#: src/generics/solution.md src/std-traits/from-and-into.md msgid "\"hello\"" msgstr "\"привіт\"" -#: src/control-flow-basics/blocks-and-scopes/scopes.md:14 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"inner scope: {a}\"" msgstr "\"внутрішня область видимості: {a}\"" -#: src/control-flow-basics/blocks-and-scopes/scopes.md:17 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"shadowed in inner scope: {a}\"" msgstr "\"затінений у внутрішній області видимості: {a}\"" -#: src/control-flow-basics/blocks-and-scopes/scopes.md:20 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"after: {a}\"" msgstr "\"після: {a}\"" -#: src/control-flow-basics/blocks-and-scopes/scopes.md:26 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "Show that a variable's scope is limited by adding a `b` in the inner block " "in the last example, and then trying to access it outside that block." @@ -3509,7 +3675,7 @@ msgstr "" "блоці в останньому прикладі, а потім спробувавши отримати доступ до неї за " "межами цього блоку." -#: src/control-flow-basics/blocks-and-scopes/scopes.md:28 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "Shadowing is different from mutation, because after shadowing both " "variables' memory locations exist at the same time. Both are available under " @@ -3519,11 +3685,11 @@ msgstr "" "пам'яті змінних існують одночасно. Обидві змінні доступні під одним і тим же " "ім'ям, залежно від того, де ви їх використовуєте у коді." -#: src/control-flow-basics/blocks-and-scopes/scopes.md:31 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "A shadowing variable can have a different type." msgstr "Змінна затінення може мати інший тип." -#: src/control-flow-basics/blocks-and-scopes/scopes.md:32 +#: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "Shadowing looks obscure at first, but is convenient for holding on to values " "after `.unwrap()`." @@ -3531,7 +3697,7 @@ msgstr "" "Затінення спочатку виглядає незрозумілим, але є зручним для збереження " "значень після `.unwrap()`." -#: src/control-flow-basics/functions.md:25 +#: src/control-flow-basics/functions.md msgid "" "Declaration parameters are followed by a type (the reverse of some " "programming languages), then a return type." @@ -3539,7 +3705,7 @@ msgstr "" "Параметри оголошення супроводжуються типом (у зворотному порядку порівняно з " "деякими мовами програмування), а потім типом повернення." -#: src/control-flow-basics/functions.md:27 +#: src/control-flow-basics/functions.md 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 +3718,7 @@ msgstr "" "значення\" є ідіоматичною у кінці функції (рефактор `gcd` щоб " "використовувати `return`)." -#: src/control-flow-basics/functions.md:31 +#: src/control-flow-basics/functions.md 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 +3726,12 @@ msgstr "" "Деякі функції не мають значення, що повертається, і повертають 'тип " "агрегату', `()`. Компілятор визначить це, якщо тип повернення пропущено." -#: src/control-flow-basics/functions.md:33 +#: src/control-flow-basics/functions.md 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 msgid "" "Always takes a fixed number of parameters. Default arguments are not " "supported. Macros can be used to support variadic functions." @@ -3574,7 +3740,7 @@ msgstr "" "підтримуються. Для підтримки варіаційних функцій можна використовувати " "макроси." -#: src/control-flow-basics/functions.md:36 +#: src/control-flow-basics/functions.md msgid "" "Always takes a single set of parameter types. These types can be generic, " "which will be covered later." @@ -3582,7 +3748,7 @@ msgstr "" "Завжди приймає єдиний набір типів параметрів. Ці типи можуть бути " "загальними, що буде розглянуто пізніше." -#: src/control-flow-basics/macros.md:7 +#: src/control-flow-basics/macros.md 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 +3758,7 @@ msgstr "" "кількість аргументів. Вони відрізняються символом `!` у кінці. До " "стандартної бібліотеки Rust входить набір корисних макросів." -#: src/control-flow-basics/macros.md:11 +#: src/control-flow-basics/macros.md 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 +3767,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 msgid "" "`format!(format, ..)` works just like `println!` but returns the result as a " "string." @@ -3609,11 +3775,11 @@ msgstr "" "`format!(format, ..)` працює так само, як `println!`, але повертає результат " "у вигляді рядка." -#: src/control-flow-basics/macros.md:15 +#: src/control-flow-basics/macros.md 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 msgid "" "`todo!()` marks a bit of code as not-yet-implemented. If executed, it will " "panic." @@ -3621,7 +3787,7 @@ msgstr "" "`todo!()` позначає частину коду як таку, що ще не виконана. Якщо цей код " "буде виконано, він викличе паніку." -#: src/control-flow-basics/macros.md:18 +#: src/control-flow-basics/macros.md msgid "" "`unreachable!()` marks a bit of code as unreachable. If executed, it will " "panic." @@ -3629,11 +3795,11 @@ msgstr "" "`unreachable!()` позначає ділянку коду як недосяжну. Якщо цей код буде " "виконано, він викличе паніку." -#: src/control-flow-basics/macros.md:36 +#: src/control-flow-basics/macros.md msgid "\"{n}! = {}\"" msgstr "\"{n}! = {}\"" -#: src/control-flow-basics/macros.md:42 +#: src/control-flow-basics/macros.md 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 +3809,7 @@ msgstr "" "те, як ними користуватися. Чому вони визначені як макроси і на що вони " "поширюються, не є особливо важливим." -#: src/control-flow-basics/macros.md:46 +#: src/control-flow-basics/macros.md msgid "" "The course does not cover defining macros, but a later section will describe " "use of derive macros." @@ -3651,7 +3817,7 @@ msgstr "" "У цьому курсі не розглядається визначення макросів, але в наступному розділі " "буде описано використання похідних макросів." -#: src/control-flow-basics/exercise.md:7 +#: src/control-flow-basics/exercise.md msgid "" "The [Collatz Sequence](https://en.wikipedia.org/wiki/Collatz_conjecture) is " "defined as follows, for an arbitrary n1 greater than zero:" @@ -3659,61 +3825,61 @@ msgstr "" "[Послідовність Коллатца](https://en.wikipedia.org/wiki/Collatz_conjecture) " "визначається наступним чином, для довільного n1 більшого за нуль:" -#: src/control-flow-basics/exercise.md:10 +#: src/control-flow-basics/exercise.md 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 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 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 msgid "For example, beginning with _n1_ = 3:" msgstr "Наприклад, починаючи з _n1_ = 3:" -#: src/control-flow-basics/exercise.md:16 +#: src/control-flow-basics/exercise.md 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 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 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 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 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 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 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 msgid "the sequence terminates." msgstr "послідовність завершується." -#: src/control-flow-basics/exercise.md:25 +#: src/control-flow-basics/exercise.md msgid "" "Write a function to calculate the length of the collatz sequence for a given " "initial `n`." @@ -3721,26 +3887,33 @@ msgstr "" "Напишіть функцію, яка обчислює довжину коллатц-послідовності для заданого " "початкового `n`." -#: src/control-flow-basics/exercise.md:29 src/control-flow-basics/solution.md:4 +#: src/control-flow-basics/exercise.md src/control-flow-basics/solution.md 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 src/control-flow-basics/solution.md +#: src/concurrency/threads/scoped.md 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 msgid "Welcome Back" msgstr "Ласкаво просимо назад" -#: src/tuples-and-arrays/arrays.md:19 +#: src/welcome-day-1-afternoon.md +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 +msgid "This segment should take about 35 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 35 хвилин. Він містить:" + +#: src/tuples-and-arrays/arrays.md 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 +3927,7 @@ msgstr "" "різними типами. Зрізи, розмір яких визначається під час виконання, " "покриваються пізніше." -#: src/tuples-and-arrays/arrays.md:25 +#: src/tuples-and-arrays/arrays.md 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 +3937,11 @@ msgstr "" "до масиву перевіряється під час виконання. Зазвичай Rust може оптимізувати " "ці перевірки, і їх можна уникнути, використовуючи небезпечний Rust." -#: src/tuples-and-arrays/arrays.md:29 +#: src/tuples-and-arrays/arrays.md msgid "We can use literals to assign values to arrays." msgstr "Ми можемо використовувати літерали для присвоєння значень масивам." -#: src/tuples-and-arrays/arrays.md:31 +#: src/tuples-and-arrays/arrays.md msgid "" "The `println!` macro asks for the debug implementation with the `?` format " "parameter: `{}` gives the default output, `{:?}` gives the debug output. " @@ -3782,7 +3955,7 @@ msgstr "" "замовчуванням, але масиви реалізують лише виведення для налагодження. Це " "означає, що тут ми повинні використовувати налагоджувальний вивід." -#: src/tuples-and-arrays/arrays.md:36 +#: src/tuples-and-arrays/arrays.md msgid "" "Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be " "easier to read." @@ -3790,15 +3963,15 @@ msgstr "" "Додавання `#`, наприклад `{a:#?}`, викликає формат \"гарного друку\", який " "може бути легшим для читання." -#: src/tuples-and-arrays/tuples.md:19 +#: src/tuples-and-arrays/tuples.md msgid "Like arrays, tuples have a fixed length." msgstr "Як і масиви, кортежі мають фіксовану довжину." -#: src/tuples-and-arrays/tuples.md:21 +#: src/tuples-and-arrays/tuples.md 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 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 +3979,7 @@ msgstr "" "Доступ до полів кортежу можна отримати після крапки з індексом значення, " "наприклад. `t.0`, `t.1`." -#: src/tuples-and-arrays/tuples.md:26 +#: src/tuples-and-arrays/tuples.md 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 +3987,11 @@ msgstr "" "Порожній кортеж `()` називається \" типом одиниці\" і означає відсутність " "значення, що повертається, подібно до `void` в інших мовах." -#: src/tuples-and-arrays/iteration.md:7 +#: src/tuples-and-arrays/iteration.md 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 msgid "" "This functionality uses the `IntoIterator` trait, but we haven't covered " "that yet." @@ -3826,7 +3999,7 @@ msgstr "" "Ця функціональність використовує трейт `IntoIterator`, але ми ще не " "розглядали його." -#: src/tuples-and-arrays/iteration.md:25 +#: src/tuples-and-arrays/iteration.md 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 +4009,7 @@ msgstr "" "`. Вони завжди перевіряються, тоді як варіанти лише для налагодження, такі " "як `debug_assert!`, не компілюються у релізних збірках." -#: src/tuples-and-arrays/destructuring.md:7 +#: src/tuples-and-arrays/destructuring.md 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 +4019,11 @@ msgstr "" "потреба витягти внутрішні значення у локальні змінні. Це можна зробити " "вручну шляхом прямого доступу до внутрішніх значень:" -#: src/tuples-and-arrays/destructuring.md:15 -#: src/tuples-and-arrays/destructuring.md:25 +#: src/tuples-and-arrays/destructuring.md msgid "\"left: {left}, right: {right}\"" msgstr "\"left: {left}, right: {right}\"" -#: src/tuples-and-arrays/destructuring.md:19 +#: src/tuples-and-arrays/destructuring.md msgid "" "However, Rust also supports using pattern matching to destructure a larger " "value into its constituent parts:" @@ -3859,7 +4031,7 @@ msgstr "" "Однак, Rust також підтримує використання зіставлення шаблонів для розбиття " "більшого значення на складові частини:" -#: src/tuples-and-arrays/destructuring.md:31 +#: src/tuples-and-arrays/destructuring.md 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 +4041,7 @@ msgstr "" "може статично перевірити, що значення праворуч від `=` має таку саму " "структуру, як і шаблон." -#: src/tuples-and-arrays/destructuring.md:34 +#: src/tuples-and-arrays/destructuring.md 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 +4050,7 @@ msgstr "" "значенню, тому ми також можемо використовувати `let` для оголошення однієї " "змінної." -#: src/tuples-and-arrays/destructuring.md:36 +#: src/tuples-and-arrays/destructuring.md 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 +4060,7 @@ msgstr "" "виконувати порівняння на рівність і деструкцію одночасно. Ця форма " "порівняння шаблонів буде розглянута більш детально пізніше." -#: src/tuples-and-arrays/destructuring.md:39 +#: src/tuples-and-arrays/destructuring.md msgid "" "Edit the examples above to show the compiler error when the pattern doesn't " "match the value being matched on." @@ -3896,15 +4068,15 @@ msgstr "" "Відредагуйте приклади вище, щоб показати помилку компілятора, коли шаблон не " "збігається зі значенням, що порівнюється." -#: src/tuples-and-arrays/exercise.md:7 +#: src/tuples-and-arrays/exercise.md msgid "Arrays can contain other arrays:" msgstr "Масиви можуть містити інші масиви:" -#: src/tuples-and-arrays/exercise.md:13 +#: src/tuples-and-arrays/exercise.md msgid "What is the type of this variable?" msgstr "Який тип цієї змінної?" -#: src/tuples-and-arrays/exercise.md:15 +#: src/tuples-and-arrays/exercise.md msgid "" "Use an array such as the above to write a function `transpose` which will " "transpose a matrix (turn rows into columns):" @@ -3912,7 +4084,7 @@ msgstr "" "Використовуйте масив, подібний до наведеного вище, для написання функції " "`transpose`, яка транспонує матрицю (перетворює рядки у стовпці):" -#: src/tuples-and-arrays/exercise.md:26 +#: src/tuples-and-arrays/exercise.md msgid "" "Copy the code below to and implement the " "function. This function only operates on 3x3 matrices." @@ -3920,29 +4092,33 @@ 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 src/borrowing/exercise.md +#: src/unsafe-rust/exercise.md 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/solution.md:17 src/tuples-and-arrays/solution.md:25 +#: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "//\n" msgstr "//\n" -#: src/tuples-and-arrays/exercise.md:57 src/tuples-and-arrays/solution.md:34 +#: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md 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 src/tuples-and-arrays/solution.md msgid "\"matrix: {:#?}\"" msgstr "\"матриця: {:#?}\"" -#: src/tuples-and-arrays/exercise.md:64 src/tuples-and-arrays/solution.md:41 +#: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "\"transposed: {:#?}\"" msgstr "\"транспонована: {:#?}\"" -#: src/references/shared.md:7 +#: src/references.md src/smart-pointers.md src/borrowing.md +#: src/concurrency/async-pitfalls.md +msgid "This segment should take about 55 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 55 хвилин. Він містить:" + +#: src/references/shared.md 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 +4128,7 @@ msgstr "" "на нього, і також називається \"запозиченням\". Спільні посилання доступні " "лише для читання, і дані, на які вони посилаються, не можуть бути змінені." -#: src/references/shared.md:24 +#: src/references/shared.md 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 +4138,18 @@ msgstr "" "допомогою оператора `&`. Оператор `*` \"розіменовує\" посилання, повертаючи " "його значення." -#: src/references/shared.md:28 +#: src/references/shared.md msgid "Rust will statically forbid dangling references:" msgstr "Rust статично забороняє висячі посилання:" -#: src/references/shared.md:41 +#: src/references/shared.md 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 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 +4162,7 @@ msgstr "" "\"власністю\" вихідної змінної. Більш детально про володіння буде розглянуто " "на третьому дні курсу." -#: src/references/shared.md:48 +#: src/references/shared.md 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 +4176,14 @@ msgstr "" "частинах курсу буде розглянуто, як Rust запобігає помилкам, пов'язаним з " "безпекою пам'яті, які виникають при використанні сирих вказівників." -#: src/references/shared.md:53 +#: src/references/shared.md msgid "" "Rust does not automatically create references for you - the `&` is always " "required." msgstr "" "Rust не створює посилання автоматично - завжди потрібно використовувати `&`." -#: src/references/shared.md:56 +#: src/references/shared.md 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 +4193,7 @@ msgstr "" "виклику методів (спробуйте `r.is_ascii()`). Тут не потрібен оператор `->`, " "як у C++." -#: src/references/shared.md:59 +#: src/references/shared.md 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 +4205,7 @@ msgstr "" "щось інше. Це відрізняється від C++, де присвоювання посилання змінює " "значення, на яке воно посилається." -#: src/references/shared.md:63 +#: src/references/shared.md msgid "" "A shared reference does not allow modifying the value it refers to, even if " "that value was mutable. Try `*r = 'X'`." @@ -4037,7 +4213,7 @@ msgstr "" "Спільне посилання не дозволяє змінювати значення, на яке воно посилається, " "навіть якщо це значення було змінним. Спробуйте `*r = 'X'`." -#: src/references/shared.md:66 +#: src/references/shared.md 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 +4225,11 @@ msgstr "" "Функція `x_axis` поверне посилання на `point`, але `point` буде звільнено, " "коли функція повернеться, тому це не буде скомпільовано." -#: src/references/shared.md:71 +#: src/references/shared.md msgid "We will talk more about borrowing when we get to ownership." msgstr "Про запозичення ми поговоримо більше, коли дійдемо до володіння." -#: src/references/exclusive.md:7 +#: src/references/exclusive.md msgid "" "Exclusive references, also known as mutable references, allow changing the " "value they refer to. They have type `&mut T`." @@ -4061,7 +4237,7 @@ msgstr "" "Ексклюзивні посилання, також відомі як мутабельні посилання, дозволяють " "змінювати значення, на яке вони посилаються. Вони мають тип `&mut T`." -#: src/references/exclusive.md:25 +#: src/references/exclusive.md 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 +4251,7 @@ msgstr "" "отримати доступ, поки існує ексклюзивне посилання. Спробуйте створити " "`&point.0` або змінити `point.0`, поки існує `x_coord`." -#: src/references/exclusive.md:30 +#: src/references/exclusive.md 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 +4263,15 @@ msgstr "" "прив'язати до різних значень, тоді як другий представляє ексклюзивне " "посилання на значення, що змінюється." -#: src/references/slices.md:7 +#: src/references/slices.md msgid "A slice gives you a view into a larger collection:" msgstr "Зріз дає змогу поглянути на більшу колекцію:" -#: src/references/slices.md:22 +#: src/references/slices.md msgid "Slices borrow data from the sliced type." msgstr "Зрізи запозичують дані зі зрізаного типу." -#: src/references/slices.md:26 +#: src/references/slices.md msgid "" "We create a slice by borrowing `a` and specifying the starting and ending " "indexes in brackets." @@ -4103,7 +4279,7 @@ msgstr "" "Ми створюємо зріз, запозичуючи `a` та вказуючи початковий і кінцевий індекси " "в дужках." -#: src/references/slices.md:29 +#: src/references/slices.md 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 +4289,7 @@ msgstr "" "відкинути початковий індекс, тобто `&a[0..a.len()]` і `&a[..a.len()]` " "ідентичні." -#: src/references/slices.md:33 +#: src/references/slices.md msgid "" "The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are " "identical." @@ -4121,13 +4297,13 @@ msgstr "" "Теж саме стосується останнього індексу, тому `&a[2..a.len()]` і `&a[2..]` " "ідентичні." -#: src/references/slices.md:36 +#: src/references/slices.md 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 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 +4313,7 @@ msgstr "" "не згадує довжину масиву. Це дозволяє нам виконувати обчислення на зрізах " "різного розміру." -#: src/references/slices.md:42 +#: src/references/slices.md 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 +4322,40 @@ msgstr "" "залишатися 'живим' (в області застосування) принаймні стільки ж, скільки і " "наш зріз." -#: src/references/strings.md:11 +#: src/references/strings.md msgid "We can now understand the two string types in Rust:" msgstr "Тепер ми можемо зрозуміти два типи рядків у Rust:" -#: src/references/strings.md:13 +#: src/references/strings.md msgid "`&str` is a slice of UTF-8 encoded bytes, similar to `&[u8]`." msgstr "" -#: src/references/strings.md:14 +#: src/references/strings.md 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 src/std-traits/read-and-write.md msgid "\"World\"" msgstr "\"Світ\"" -#: src/references/strings.md:22 +#: src/references/strings.md msgid "\"s1: {s1}\"" msgstr "\"s1: {s1}\"" -#: src/references/strings.md:24 +#: src/references/strings.md msgid "\"Hello \"" msgstr "\"Привіт \"" -#: src/references/strings.md:25 src/references/strings.md:27 -#: src/memory-management/move.md:13 +#: src/references/strings.md src/memory-management/move.md msgid "\"s2: {s2}\"" msgstr "\"s2: {s2}\"" -#: src/references/strings.md:30 +#: src/references/strings.md msgid "\"s3: {s3}\"" msgstr "\"s3: {s3}\"" -#: src/references/strings.md:36 +#: src/references/strings.md 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 +4365,7 @@ msgstr "" "кодуванні UTF-8, що зберігаються в блоці пам’яті. Рядкові літерали (`\"Hello" "\"`) зберігаються у бінарному файлі програми." -#: src/references/strings.md:40 +#: src/references/strings.md msgid "" "Rust's `String` type is a wrapper around a vector of bytes. As with a " "`Vec`, it is owned." @@ -4198,7 +4373,7 @@ msgstr "" "Тип `String` в Rust — це оболонка навколо вектора байтів. Як і у випадку з " "`Vec`, він знаходиться у володінні." -#: src/references/strings.md:43 +#: src/references/strings.md 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 +4383,7 @@ msgstr "" "літералу; `String::new()` створює новий порожній рядок, до якого дані рядка " "можна додати за допомогою методів `push()` і `push_str()`." -#: src/references/strings.md:47 +#: src/references/strings.md 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 +4392,7 @@ msgstr "" "динамічних значень. Він приймає таку саму специфікацію формату, як і " "`println!()`." -#: src/references/strings.md:50 +#: src/references/strings.md 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 +4404,7 @@ msgstr "" "вирівняно за межами символів, вираз запанікує. Ітератор `chars` перебирає " "символи, і йому надається перевага перед спробами вирівняти межі символів." -#: src/references/strings.md:55 +#: src/references/strings.md 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 +4417,13 @@ msgstr "" "містити лише байти у кодуванні UTF-8 і ніколи не використовує оптимізацію " "малих рядків).." -#: src/references/strings.md:60 +#: src/references/strings.md msgid "Byte strings literals allow you to create a `&[u8]` value directly:" msgstr "" "Літерали байтових рядків дозволяють створювати значення `&[u8]` " "безпосередньо:" -#: src/references/strings.md:70 +#: src/references/strings.md 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 +4433,7 @@ msgstr "" "екрануванням: `r\"\\n\" == \"\\\\n\"`. Ви можете вставити подвійні лапки, " "використовуючи однакову кількість `#` з обох боків лапок:" -#: src/references/exercise.md:7 +#: src/references/exercise.md 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 +4442,7 @@ msgstr "" "Ми створимо декілька утиліт для тривимірної геометрії, що представляють " "точку у вигляді `[f64;3]`. Ви самі визначаєте сигнатури функцій." -#: src/references/exercise.md:11 +#: src/references/exercise.md msgid "" "// Calculate the magnitude of a vector by summing the squares of its " "coordinates\n" @@ -4280,7 +4455,7 @@ msgstr "" "обчислення квадратного\n" "// кореня, наприклад `v.sqrt()`.\n" -#: src/references/exercise.md:19 +#: src/references/exercise.md msgid "" "// Normalize a vector by calculating its magnitude and dividing all of its\n" "// coordinates by that magnitude.\n" @@ -4288,73 +4463,76 @@ msgstr "" "// Нормалізуйте вектор, обчисливши його величину і поділивши всі його\n" "// координати на цю величину.\n" -#: src/references/exercise.md:27 +#: src/references/exercise.md 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 src/references/solution.md msgid "\"Magnitude of a unit vector: {}\"" msgstr "\"Величина одиничного вектора: {}\"" -#: src/references/exercise.md:34 src/references/solution.md:25 +#: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of {v:?}: {}\"" msgstr "\"Величина {v:?}: {}\"" -#: src/references/exercise.md:36 src/references/solution.md:27 +#: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of {v:?} after normalization: {}\"" msgstr "\"Величина {v:?} після нормалізації: {}\"" -#: src/references/solution.md:4 +#: src/references/solution.md msgid "/// Calculate the magnitude of the given vector.\n" msgstr "/// Обчисліть величину заданого вектора.\n" -#: src/references/solution.md:12 +#: src/references/solution.md msgid "" "/// Change the magnitude of the vector to 1.0 without changing its " "direction.\n" msgstr "/// Змініть величину вектора на 1.0, не змінюючи його напрямок.\n" -#: src/user-defined-types/named-structs.md:7 +#: src/user-defined-types.md src/methods-and-traits.md src/lifetimes.md +msgid "This segment should take about 50 minutes. It contains:" +msgstr "Цей сегмент повинен зайняти близько 50 хвилин. Він містить:" + +#: src/user-defined-types/named-structs.md 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 msgid "\"{} is {} years old\"" msgstr "\"{} віком {} років\"" -#: src/user-defined-types/named-structs.md:20 -#: src/android/interoperability/with-c/bindgen.md:87 +#: src/user-defined-types/named-structs.md +#: src/android/interoperability/with-c/bindgen.md msgid "\"Peter\"" msgstr "\"Peter\"" -#: src/user-defined-types/named-structs.md:26 +#: src/user-defined-types/named-structs.md msgid "\"Avery\"" msgstr "\"Avery\"" -#: src/user-defined-types/named-structs.md:31 +#: src/user-defined-types/named-structs.md 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 src/user-defined-types/enums.md +#: src/pattern-matching/match.md src/methods-and-traits/methods.md msgid "Key Points:" msgstr "Ключові моменти:" -#: src/user-defined-types/named-structs.md:40 +#: src/user-defined-types/named-structs.md 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 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 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 msgid "" "This may be a good time to let people know there are different types of " "structs." @@ -4362,7 +4540,7 @@ msgstr "" "Це може бути вдалий час, щоб повідомити людям, що існують різні типи " "структур." -#: src/user-defined-types/named-structs.md:45 +#: src/user-defined-types/named-structs.md 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 +4550,7 @@ msgstr "" "використані при реалізації трейту на якомусь типі, але не мають даних, які " "ви хочете зберігати у самому значенні." -#: src/user-defined-types/named-structs.md:48 +#: src/user-defined-types/named-structs.md msgid "" "The next slide will introduce Tuple structs, used when the field names are " "not important." @@ -4380,7 +4558,7 @@ msgstr "" "На наступному слайді буде представлено структури кортежу, які " "використовуються, коли імена полів не важливі." -#: src/user-defined-types/named-structs.md:50 +#: src/user-defined-types/named-structs.md msgid "" "If you already have variables with the right names, then you can create the " "struct using a shorthand." @@ -4388,7 +4566,7 @@ msgstr "" "Якщо у вас уже є змінні з правильними іменами, ви можете створити структуру " "за допомогою скорочення:" -#: src/user-defined-types/named-structs.md:52 +#: src/user-defined-types/named-structs.md 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 +4576,31 @@ msgstr "" "структури без необхідності явного введення всіх полів. Це завжди має бути " "останнім елементом." -#: src/user-defined-types/tuple-structs.md:11 +#: src/user-defined-types/tuple-structs.md 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 msgid "\"({}, {})\"" msgstr "\"({}, {})\"" -#: src/user-defined-types/tuple-structs.md:22 +#: src/user-defined-types/tuple-structs.md 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 msgid "\"Ask a rocket scientist at NASA\"" msgstr "\"Запитайте вченого-ракетника з NASA\"" -#: src/user-defined-types/tuple-structs.md:33 -#: 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/user-defined-types/tuple-structs.md +#: src/android/interoperability/cpp/cpp-bridge.md +#: src/bare-metal/microcontrollers/type-state.md +#: src/concurrency/async-pitfalls/cancellation.md msgid "// ...\n" msgstr "// ...\n" -#: src/user-defined-types/tuple-structs.md:44 +#: src/user-defined-types/tuple-structs.md msgid "" "Newtypes are a great way to encode additional information about the value in " "a primitive type, for example:" @@ -4431,12 +4608,12 @@ msgstr "" "Newtypes — чудовий спосіб закодувати додаткову інформацію про значення в " "примітивному типі, наприклад:" -#: src/user-defined-types/tuple-structs.md:46 +#: src/user-defined-types/tuple-structs.md 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 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 +4622,7 @@ msgstr "" "потрібно перевіряти його знову при кожному використанні: " "`PhoneNumber(String)` або `OddNumber(u32)`." -#: src/user-defined-types/tuple-structs.md:50 +#: src/user-defined-types/tuple-structs.md msgid "" "Demonstrate how to add a `f64` value to a `Newtons` type by accessing the " "single field in the newtype." @@ -4453,7 +4630,7 @@ msgstr "" "Продемонструйте, як додати значення `f64` до типу `Newtons`, отримавши " "доступ до єдиного поля в newtype." -#: src/user-defined-types/tuple-structs.md:52 +#: src/user-defined-types/tuple-structs.md msgid "" "Rust generally doesn’t like inexplicit things, like automatic unwrapping or " "for instance using booleans as integers." @@ -4461,11 +4638,11 @@ msgstr "" "Rust зазвичай не любить неявних речей, таких як автоматичне розгортання або, " "наприклад, використання логічних значень як цілих чисел." -#: src/user-defined-types/tuple-structs.md:54 +#: src/user-defined-types/tuple-structs.md 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 msgid "" "The example is a subtle reference to the [Mars Climate Orbiter](https://en." "wikipedia.org/wiki/Mars_Climate_Orbiter) failure." @@ -4473,34 +4650,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 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 msgid "// Simple variant\n" msgstr "// Простий варіант\n" -#: src/user-defined-types/enums.md:20 +#: src/user-defined-types/enums.md msgid "// Tuple variant\n" msgstr "// Варіант кортежу\n" -#: src/user-defined-types/enums.md:21 +#: src/user-defined-types/enums.md msgid "// Struct variant\n" msgstr "// Варіант структури\n" -#: src/user-defined-types/enums.md:26 -msgid "\"On this turn: {:?}\"" -msgstr "\"На цьому повороті: {:?}\"" +#: src/user-defined-types/enums.md +msgid "\"On this turn: {player_move:?}\"" +msgstr "\"На цьому повороті: {player_move:?}\"" -#: src/user-defined-types/enums.md:34 +#: src/user-defined-types/enums.md 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 msgid "" "`Direction` is a type with variants. There are two values of `Direction`: " "`Direction::Left` and `Direction::Right`." @@ -4508,7 +4685,7 @@ msgstr "" "Напрямок - це тип з варіантами. Існує два значення `Direction`: `Direction::" "Left` та `Direction::Right`." -#: src/user-defined-types/enums.md:37 +#: src/user-defined-types/enums.md 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 +4695,11 @@ msgstr "" "навантаження, Rust зберігатиме дискримінант, щоб під час виконання знати, " "який варіант є у значенні `PlayerMove`." -#: src/user-defined-types/enums.md:40 +#: src/user-defined-types/enums.md 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 msgid "" "In both, you can have a simple version without fields (unit struct) or one " "with different types of fields (variant payloads)." @@ -4530,7 +4707,7 @@ msgstr "" "В обох ви можете мати просту версію без полів (структура одиниць) або з " "різними типами полів (різні варіанти корисного навантаження)." -#: src/user-defined-types/enums.md:43 +#: src/user-defined-types/enums.md 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 +4717,16 @@ msgstr "" "але тоді вони не будуть одного типу, як якщо б всі вони були визначені в " "переліку." -#: src/user-defined-types/enums.md:46 +#: src/user-defined-types/enums.md msgid "Rust uses minimal space to store the discriminant." msgstr "" "Rust використовує мінімальний обсяг пам'яті для зберігання дискримінанта." -#: src/user-defined-types/enums.md:47 +#: src/user-defined-types/enums.md 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 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 +4738,27 @@ msgstr "" "(\"нішева оптимізація\"). Наприклад, `Option<&u8>` зберігає або вказівник на " "ціле число, або `NULL` для варіанта `None`." -#: src/user-defined-types/enums.md:52 +#: src/user-defined-types/enums.md 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 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 src/user-defined-types/static.md +#: src/memory-management/review.md src/memory-management/move.md +#: src/memory-management/copy-types.md src/borrowing/shared.md +#: src/error-handling/result.md src/error-handling/anyhow.md msgid "More to Explore" msgstr "Більше інформації для вивчення" -#: src/user-defined-types/enums.md:75 +#: src/user-defined-types/enums.md msgid "" "Rust has several optimizations it can employ to make enums take up less " "space." @@ -4590,7 +4766,7 @@ msgstr "" "Rust має декілька оптимізацій, які можна застосувати, щоб зменшити розмір " "переліків." -#: src/user-defined-types/enums.md:77 +#: src/user-defined-types/enums.md msgid "" "Null pointer optimization: For [some types](https://doc.rust-lang.org/std/" "option/#representation), Rust guarantees that `size_of::()` equals " @@ -4600,7 +4776,7 @@ msgstr "" "org/std/option/#representation) Rust гарантує, що `size_of::()` дорівнює " "`size_of::