msgid "" msgstr "" "Project-Id-Version: Comprehensive Rust 🦀\n" "POT-Creation-Date: 2023-12-18T21:00:17-05:00\n" "PO-Revision-Date: 2023-10-18 20:05+0300\n" "Last-Translator: Oleksandr Leoshko \n" "Language-Team: \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.4\n" #: src\SUMMARY.md:3 src\index.md:1 msgid "Welcome to Comprehensive Rust 🦀" msgstr "Ласкаво просимо в Comprehensive Rust 🦀" #: src\SUMMARY.md:4 src\running-the-course.md:1 msgid "Running the Course" msgstr "Проведення курсу" #: src\SUMMARY.md:5 src\running-the-course/course-structure.md:1 msgid "Course Structure" msgstr "Структура курсу" #: src\SUMMARY.md:6 src\running-the-course/keyboard-shortcuts.md:1 msgid "Keyboard Shortcuts" msgstr "Гарячі клавіші" #: src\SUMMARY.md:7 src\running-the-course/translations.md:1 msgid "Translations" msgstr "Переклади" #: src\SUMMARY.md:8 src\cargo.md:1 msgid "Using Cargo" msgstr "Використання Cargo" #: src\SUMMARY.md:9 msgid "Rust Ecosystem" msgstr "Екосистема Rust" #: src\SUMMARY.md:10 msgid "Code Samples" msgstr "Приклади коду" #: src\SUMMARY.md:11 msgid "Running Cargo Locally" msgstr "Локальний запуск Cargo" #: src\SUMMARY.md:16 msgid "Day 1: Morning" msgstr "День 1: Ранок" #: src\SUMMARY.md:18 src\SUMMARY.md:44 src\SUMMARY.md:70 src\SUMMARY.md:93 #: src\SUMMARY.md:119 src\SUMMARY.md:138 src\SUMMARY.md:158 src\SUMMARY.md:184 #: src\SUMMARY.md:207 src\SUMMARY.md:246 src\SUMMARY.md:288 src\SUMMARY.md:340 msgid "Welcome" msgstr "Ласкаво просимо" #: src\SUMMARY.md:19 src\SUMMARY.md:21 src\hello-world.md:1 #: src\hello-world/hello-world.md:1 msgid "Hello, World" msgstr "Hello World!" #: src\SUMMARY.md:20 src\hello-world/what-is-rust.md:1 msgid "What is Rust?" msgstr "Що таке Rust?" #: src\SUMMARY.md:22 src\hello-world/benefits.md:1 msgid "Benefits of Rust" msgstr "Переваги Rust" #: src\SUMMARY.md:23 src\hello-world/playground.md:1 msgid "Playground" msgstr "Ігровий майданчик" #: src\SUMMARY.md:24 src\types-and-values.md:1 msgid "Types and Values" msgstr "Типи та значення" #: src\SUMMARY.md:25 src\types-and-values/variables.md:1 msgid "Variables" msgstr "Змінні" #: src\SUMMARY.md:26 src\types-and-values/values.md:1 msgid "Values" msgstr "Значення" #: src\SUMMARY.md:27 src\types-and-values/arithmetic.md:1 msgid "Arithmetic" msgstr "Арифметика" #: src\SUMMARY.md:28 src\types-and-values/strings.md:1 msgid "Strings" msgstr "Рядки" #: src\SUMMARY.md:29 src\types-and-values/inference.md:1 msgid "Type Inference" msgstr "Виведення типів" #: src\SUMMARY.md:30 src\types-and-values/exercise.md:1 msgid "Exercise: Fibonacci" msgstr "Вправа: Фібоначчі" #: src\SUMMARY.md:31 src\SUMMARY.md:40 src\SUMMARY.md:51 src\SUMMARY.md:56 #: src\SUMMARY.md:64 src\SUMMARY.md:75 src\SUMMARY.md:82 src\SUMMARY.md:89 #: src\SUMMARY.md:103 src\SUMMARY.md:113 src\SUMMARY.md:129 src\SUMMARY.md:134 #: src\SUMMARY.md:144 src\SUMMARY.md:152 src\SUMMARY.md:164 src\SUMMARY.md:171 #: src\SUMMARY.md:180 src\SUMMARY.md:192 src\SUMMARY.md:201 #: 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\slices-and-lifetimes/solution.md:1 #: src\iterators/solution.md:1 src\modules/solution.md:1 #: src\testing/solution.md:1 src\error-handling/solution.md:1 #: src\unsafe-rust/solution.md:1 msgid "Solution" msgstr "Рішення" #: src\SUMMARY.md:32 src\control-flow-basics.md:1 msgid "Control Flow Basics" msgstr "Основи потоку керування" #: src\SUMMARY.md:33 src\control-flow-basics/conditionals.md:1 msgid "Conditionals" msgstr "Умовні слова" #: src\SUMMARY.md:34 src\control-flow-basics/loops.md:1 msgid "Loops" msgstr "Цикли" #: src\SUMMARY.md:35 src\control-flow-basics/break-continue.md:1 msgid "`break` and `continue`" msgstr "`break` та `continue`" #: src\SUMMARY.md:36 src\control-flow-basics/blocks-and-scopes.md:1 msgid "Blocks and Scopes" msgstr "Блоки та області застосування" #: src\SUMMARY.md:37 src\control-flow-basics/functions.md:1 msgid "Functions" msgstr "Функції" #: src\SUMMARY.md:38 src\control-flow-basics/macros.md:1 msgid "Macros" msgstr "Макроси" #: src\SUMMARY.md:39 src\control-flow-basics/exercise.md:1 msgid "Exercise: Collatz Sequence" msgstr "Вправа: Послідовність Коллатца" #: src\SUMMARY.md:42 msgid "Day 1: Afternoon" msgstr "День 1: Полудень" #: src\SUMMARY.md:45 src\SUMMARY.md:46 src\tuples-and-arrays.md:1 #: src\tuples-and-arrays/tuples-and-arrays.md:1 msgid "Tuples and Arrays" msgstr "Кортежі та масиви" #: src\SUMMARY.md:47 src\tuples-and-arrays/iteration.md:1 msgid "Array Iteration" msgstr "Ітерація масиву" #: src\SUMMARY.md:48 src\SUMMARY.md:71 src\tuples-and-arrays/match.md:1 #: src\pattern-matching.md:1 msgid "Pattern Matching" msgstr "Зіставлення зразків" #: src\SUMMARY.md:49 src\SUMMARY.md:72 src\tuples-and-arrays/destructuring.md:1 #: src\pattern-matching/destructuring.md:1 msgid "Destructuring" msgstr "Деструктурування" #: src\SUMMARY.md:50 src\tuples-and-arrays/exercise.md:1 msgid "Exercise: Nested Arrays" msgstr "Вправа: Вкладені масиви" #: src\SUMMARY.md:52 src\references.md:1 msgid "References" msgstr "Посилання" #: src\SUMMARY.md:53 src\references/shared.md:1 msgid "Shared References" msgstr "Спільні посилання" #: src\SUMMARY.md:54 src\references/exclusive.md:1 msgid "Exclusive References" msgstr "Ексклюзивні посилання" #: src\SUMMARY.md:55 src\references/exercise.md:1 msgid "Exercise: Geometry" msgstr "Вправа: Геометрія" #: src\SUMMARY.md:57 src\user-defined-types.md:1 msgid "User-Defined Types" msgstr "Типи, які визначаються користувачем" #: src\SUMMARY.md:58 src\user-defined-types/named-structs.md:1 msgid "Named Structs" msgstr "Іменовані структури" #: src\SUMMARY.md:59 src\user-defined-types/tuple-structs.md:4 msgid "Tuple Structs" msgstr "Кортежні структури" #: src\SUMMARY.md:60 src\user-defined-types/enums.md:1 #: src\pattern-matching/destructuring.md:23 #: src\pattern-matching/destructuring.md:65 msgid "Enums" msgstr "Перелічувані типи" #: src\SUMMARY.md:61 src\user-defined-types/static-and-const.md:1 msgid "Static and Const" msgstr "Static та Const" #: src\SUMMARY.md:62 src\user-defined-types/aliases.md:1 msgid "Type Aliases" msgstr "Псевдоніми типу" #: src\SUMMARY.md:63 src\user-defined-types/exercise.md:1 msgid "Exercise: Elevator Events" msgstr "Вправа: події в ліфті" #: src\SUMMARY.md:68 msgid "Day 2: Morning" msgstr "День 2: Ранок" #: src\SUMMARY.md:73 src\pattern-matching/let-control-flow.md:1 msgid "Let Control Flow" msgstr "Потік контролю Let" #: src\SUMMARY.md:74 src\pattern-matching/exercise.md:1 msgid "Exercise: Expression Evaluation" msgstr "Вправа: обчислення виразу" #: src\SUMMARY.md:76 src\methods-and-traits.md:1 msgid "Methods and Traits" msgstr "Методи та Трейти" #: src\SUMMARY.md:77 src\methods-and-traits/methods.md:1 msgid "Methods" msgstr "Методи" #: src\SUMMARY.md:78 src\methods-and-traits/traits.md:1 msgid "Traits" msgstr "Трейти" #: src\SUMMARY.md:79 src\methods-and-traits/deriving.md:1 msgid "Deriving" msgstr "Виведення" #: src\SUMMARY.md:80 src\methods-and-traits/trait-objects.md:1 msgid "Trait Objects" msgstr "Трейт об'єкти" #: src\SUMMARY.md:81 src\methods-and-traits/exercise.md:1 msgid "Exercise: GUI Library" msgstr "Вправа: Бібліотека графічного інтерфейсу користувача" #: src\SUMMARY.md:83 src\generics.md:1 msgid "Generics" msgstr "Узагальнені типи" #: src\SUMMARY.md:84 src\generics/generic-functions.md:1 msgid "Generic Functions" msgstr "Узагальнені функції" #: src\SUMMARY.md:85 src\generics/generic-data.md:1 msgid "Generic Data Types" msgstr "Узагальнені типи даних" #: src\SUMMARY.md:86 src\generics/trait-bounds.md:1 msgid "Trait Bounds" msgstr "Обмеження трейту" #: src\SUMMARY.md:87 src\generics/impl-trait.md:1 msgid "`impl Trait`" msgstr "`impl Trait`" #: src\SUMMARY.md:88 src\generics/exercise.md:1 msgid "Exercise: Generic `min`" msgstr "Вправа: узагальнений `min`" #: src\SUMMARY.md:91 msgid "Day 2: Afternoon" msgstr "День 2: Полудень" #: src\SUMMARY.md:94 src\std-types.md:1 msgid "Standard Library Types" msgstr "Типи стандартної бібліотеки" #: src\SUMMARY.md:95 src\std-types/std.md:1 msgid "Standard Library" msgstr "Стандартна бібліотека" #: src\SUMMARY.md:96 src\std-types/docs.md:1 msgid "Documentation" msgstr "Документація" #: src\SUMMARY.md:97 msgid "`Option`" msgstr "`Option`" #: src\SUMMARY.md:98 msgid "`Result`" msgstr "`Result`" #: src\SUMMARY.md:99 src\android/interoperability/cpp/type-mapping.md:5 msgid "`String`" msgstr "`String`" #: src\SUMMARY.md:100 src\std-types/vec.md:1 msgid "`Vec`" msgstr "`Vec`" #: src\SUMMARY.md:101 src\std-types/hashmap.md:1 src\bare-metal/no_std.md:46 msgid "`HashMap`" msgstr "`HashMap`" #: src\SUMMARY.md:102 src\std-types/exercise.md:1 msgid "Exercise: Counter" msgstr "Вправа: Лічилка" #: src\SUMMARY.md:104 src\std-traits.md:1 msgid "Standard Library Traits" msgstr "Трейти стандартної бібліотеки" #: src\SUMMARY.md:105 src\std-traits/comparisons.md:1 src\async.md:17 msgid "Comparisons" msgstr "Порівняння" #: src\SUMMARY.md:106 src\std-traits/operators.md:1 msgid "Operators" msgstr "Оператори" #: src\SUMMARY.md:107 src\std-traits/from-and-into.md:1 msgid "`From` and `Into`" msgstr "`From` та `Into`" #: src\SUMMARY.md:108 src\std-traits/casting.md:1 msgid "Casting" msgstr "Приведення" #: src\SUMMARY.md:109 src\std-traits/read-and-write.md:1 msgid "`Read` and `Write`" msgstr "`Read` та `Write`" #: src\SUMMARY.md:110 msgid "`Default`, struct update syntax" msgstr "`Default`, синтаксис оновлення структури" #: src\SUMMARY.md:111 src\std-traits/closures.md:1 msgid "Closures" msgstr "Закриття" #: src\SUMMARY.md:112 src\std-traits/exercise.md:1 msgid "Exercise: ROT13" msgstr "Вправа: ROT13" #: src\SUMMARY.md:117 msgid "Day 3: Morning" msgstr "День 3: Ранок" #: src\SUMMARY.md:120 src\memory-management.md:1 msgid "Memory Management" msgstr "Управління пам'яттю" #: src\SUMMARY.md:121 src\memory-management/review.md:1 msgid "Review of Program Memory" msgstr "Огляд пам'яті програми" #: src\SUMMARY.md:122 src\memory-management/approaches.md:1 msgid "Approaches to Memory Management" msgstr "Підходи до управління пам'яттю" #: src\SUMMARY.md:123 src\memory-management/ownership.md:1 msgid "Ownership" msgstr "Володіння" #: src\SUMMARY.md:124 src\memory-management/move.md:1 msgid "Move Semantics" msgstr "Семантика переміщення" #: src\SUMMARY.md:125 msgid "`Clone`" msgstr "`Clone`" #: src\SUMMARY.md:126 src\memory-management/copy-types.md:4 msgid "Copy Types" msgstr "Типи копіювання" #: src\SUMMARY.md:127 msgid "`Drop`" msgstr "`Drop`" #: src\SUMMARY.md:128 src\memory-management/exercise.md:1 msgid "Exercise: Builder Type" msgstr "Вправа: Тип будівельника" #: src\SUMMARY.md:130 src\smart-pointers.md:1 msgid "Smart Pointers" msgstr "Розумні вказівники" #: src\SUMMARY.md:131 src\smart-pointers/box.md:1 #: src\android/interoperability/cpp/type-mapping.md:9 msgid "`Box`" msgstr "`Box`" #: src\SUMMARY.md:132 src\smart-pointers/rc.md:1 msgid "`Rc`" msgstr "`Rc`" #: src\SUMMARY.md:133 src\smart-pointers/exercise.md:1 msgid "Exercise: Binary Tree" msgstr "Вправа: Бінарне дерево" #: src\SUMMARY.md:136 msgid "Day 3: Afternoon" msgstr "День 3: Полудень" #: src\SUMMARY.md:139 src\borrowing.md:1 msgid "Borrowing" msgstr "Запозичення" #: src\SUMMARY.md:140 src\borrowing/shared.md:1 msgid "Borrowing a Value" msgstr "Запозичення значення" #: src\SUMMARY.md:141 src\borrowing/borrowck.md:1 msgid "Borrow Checking" msgstr "Перевірка запозичення" #: src\SUMMARY.md:142 src\borrowing/interior-mutability.md:4 msgid "Interior Mutability" msgstr "Внутрішня мутабельність" #: src\SUMMARY.md:143 src\borrowing/exercise.md:1 msgid "Exercise: Health Statistics" msgstr "Вправа: Статистика здоров’я" #: src\SUMMARY.md:145 src\slices-and-lifetimes.md:1 msgid "Slices and Lifetimes" msgstr "Зрізи та тривалість життя" #: src\SUMMARY.md:146 msgid "Slices: `&[T]`" msgstr "Зрізи: `&[T]`" #: src\SUMMARY.md:147 src\slices-and-lifetimes/str.md:4 msgid "String References" msgstr "Рядкові посилання" #: src\SUMMARY.md:148 src\slices-and-lifetimes/lifetime-annotations.md:1 msgid "Lifetime Annotations" msgstr "Анотації тривалісті життя" #: src\SUMMARY.md:149 msgid "Lifetime Elision" msgstr "Упущення тривалісті життя" #: src\SUMMARY.md:150 msgid "Struct Lifetimes" msgstr "Тривалість життя структур" #: src\SUMMARY.md:151 src\slices-and-lifetimes/exercise.md:1 msgid "Exercise: Protobuf Parsing" msgstr "Вправа: Розбір Protobuf" #: src\SUMMARY.md:156 msgid "Day 4: Morning" msgstr "День 1: Ранок" #: src\SUMMARY.md:159 src\iterators.md:1 msgid "Iterators" msgstr "Ітератори" #: src\SUMMARY.md:160 src\iterators/iterator.md:4 src\bare-metal/no_std.md:28 msgid "`Iterator`" msgstr "`Ітератор`" #: src\SUMMARY.md:161 src\iterators/intoiterator.md:1 msgid "`IntoIterator`" msgstr "`IntoIterator`" #: src\SUMMARY.md:162 msgid "`FromIterator`" msgstr "`FromIterator`" #: src\SUMMARY.md:163 src\iterators/exercise.md:1 msgid "Exercise: Iterator Method Chaining" msgstr "Вправа: ланцюжок методів ітератора" #: src\SUMMARY.md:165 src\SUMMARY.md:166 src\modules.md:1 #: src\modules/modules.md:1 msgid "Modules" msgstr "Модулі" #: src\SUMMARY.md:167 src\modules/filesystem.md:1 msgid "Filesystem Hierarchy" msgstr "Ієрархія файлової системи" #: src\SUMMARY.md:168 src\modules/visibility.md:1 msgid "Visibility" msgstr "Видимість" #: src\SUMMARY.md:169 msgid "`use`, `super`, `self`" msgstr "`use`, `super`, `self`" #: src\SUMMARY.md:170 src\modules/exercise.md:1 msgid "Exercise: Modules for the GUI Library" msgstr "Вправа: Модулі для бібліотеки графічного інтерфейсу користувача" #: src\SUMMARY.md:172 src\SUMMARY.md:255 src\testing.md:1 #: src\chromium/testing.md:1 msgid "Testing" msgstr "Тестування" #: src\SUMMARY.md:173 msgid "Test Modules" msgstr "Тестові модулі" #: src\SUMMARY.md:174 src\testing/other.md:1 msgid "Other Types of Tests" msgstr "Інші типи тестів" #: src\SUMMARY.md:175 src\SUMMARY.md:323 src\testing/useful-crates.md:1 msgid "Useful Crates" msgstr "Корисні крейти" #: src\SUMMARY.md:176 src\testing/googletest.md:1 msgid "GoogleTest" msgstr "GoogleTest" #: src\SUMMARY.md:177 src\testing/mocking.md:1 msgid "Mocking" msgstr "Mocking" #: src\SUMMARY.md:178 src\testing/lints.md:1 msgid "Compiler Lints and Clippy" msgstr "Лінти компілятора та Clippy" #: src\SUMMARY.md:179 src\testing/exercise.md:1 msgid "Exercise: Luhn Algorithm" msgstr "Вправа: Алгоритм Луна" #: src\SUMMARY.md:182 msgid "Day 4: Afternoon" msgstr "День 1: Полудень" #: src\SUMMARY.md:185 src\error-handling.md:1 msgid "Error Handling" msgstr "Обробка помилок" #: src\SUMMARY.md:186 src\error-handling/panics.md:1 msgid "Panics" msgstr "Паніки" #: src\SUMMARY.md:187 src\error-handling/try.md:1 msgid "Try Operator" msgstr "Try оператор" #: src\SUMMARY.md:188 src\error-handling/try-conversions.md:1 msgid "Try Conversions" msgstr "Try Перетворення" #: src\SUMMARY.md:189 msgid "`Error` Trait" msgstr "`Error` трейт" #: src\SUMMARY.md:190 msgid "`thiserror` and `anyhow`" msgstr "`thiserror` та `anyhow`" #: src\SUMMARY.md:191 msgid "Exercise: Rewriting with `Result`" msgstr "Вправа: Переписування с `Result`" #: src\SUMMARY.md:193 src\unsafe-rust.md:1 src\unsafe-rust/unsafe.md:1 msgid "Unsafe Rust" msgstr "Небезпечний Rust" #: src\SUMMARY.md:194 msgid "Unsafe" msgstr "Unsafe" #: src\SUMMARY.md:195 src\unsafe-rust/dereferencing.md:1 msgid "Dereferencing Raw Pointers" msgstr "Розіменування \"сирих\" вказівників" #: src\SUMMARY.md:196 src\unsafe-rust/mutable-static.md:1 msgid "Mutable Static Variables" msgstr "Несталі статичні змінні" #: src\SUMMARY.md:197 src\unsafe-rust/unions.md:1 msgid "Unions" msgstr "Об'єднання" #: src\SUMMARY.md:198 src\unsafe-rust/unsafe-functions.md:1 msgid "Unsafe Functions" msgstr "Небезпечні функції" #: src\SUMMARY.md:199 msgid "Unsafe Traits" msgstr "Небезпечні трейти" #: src\SUMMARY.md:200 msgid "Exercise: FFI Wrapper" msgstr "Вправа: обгортка FFI" #: src\SUMMARY.md:203 src\SUMMARY.md:329 src\bare-metal/android.md:1 msgid "Android" msgstr "Android" #: src\SUMMARY.md:208 src\SUMMARY.md:247 src\android/setup.md:1 #: src\chromium/setup.md:1 msgid "Setup" msgstr "Установка" #: src\SUMMARY.md:209 src\SUMMARY.md:250 src\android/build-rules.md:1 msgid "Build Rules" msgstr "Правила побудови" #: src\SUMMARY.md:210 msgid "Binary" msgstr "Бінарний файл" #: src\SUMMARY.md:211 msgid "Library" msgstr "Бібліотека" #: src\SUMMARY.md:212 src\android/aidl.md:1 msgid "AIDL" msgstr "AIDL" #: src\SUMMARY.md:213 msgid "Interface" msgstr "Інтерфейс" #: src\SUMMARY.md:214 msgid "Implementation" msgstr "Реалізація" #: src\SUMMARY.md:215 msgid "Server" msgstr "Сервер" #: src\SUMMARY.md:216 src\android/aidl/deploy.md:1 msgid "Deploy" msgstr "Розгортка" #: src\SUMMARY.md:217 msgid "Client" msgstr "Кліент" #: src\SUMMARY.md:218 src\android/aidl/changing.md:1 msgid "Changing API" msgstr "Зміна API" #: src\SUMMARY.md:219 src\SUMMARY.md:319 src\android/logging.md:1 #: src\bare-metal/aps/logging.md:1 msgid "Logging" msgstr "Журналювання" #: src\SUMMARY.md:220 src\android/interoperability.md:1 msgid "Interoperability" msgstr "Інтероперабельність" #: src\SUMMARY.md:221 msgid "With C" msgstr "З С" #: src\SUMMARY.md:222 msgid "Calling C with Bindgen" msgstr "Виклик С за допомогою Bindgen" #: src\SUMMARY.md:223 msgid "Calling Rust from C" msgstr "Виклик Rust з C" #: src\SUMMARY.md:224 msgid "With C++)" msgstr "З С++" #: src\SUMMARY.md:225 src\android/interoperability/cpp/bridge.md:1 msgid "The Bridge Module" msgstr "Модуль Bridge" #: src\SUMMARY.md:226 msgid "Rust Bridge" msgstr "Rust Bridge" #: src\SUMMARY.md:227 src\android/interoperability/cpp/generated-cpp.md:1 msgid "Generated C++" msgstr "Згенерований C++" #: src\SUMMARY.md:228 msgid "C++ Bridge" msgstr "C++ Bridge" #: src\SUMMARY.md:229 src\android/interoperability/cpp/shared-types.md:1 msgid "Shared Types" msgstr "Спільні типи" #: src\SUMMARY.md:230 src\android/interoperability/cpp/shared-enums.md:1 msgid "Shared Enums" msgstr "Спільні переліки" #: src\SUMMARY.md:231 src\android/interoperability/cpp/rust-result.md:1 msgid "Rust Error Handling" msgstr "Обробка помилок в Rust" #: src\SUMMARY.md:232 src\android/interoperability/cpp/cpp-exception.md:1 msgid "C++ Error Handling" msgstr "Обробка помилок в C++" #: src\SUMMARY.md:233 src\android/interoperability/cpp/type-mapping.md:1 msgid "Additional Types" msgstr "Додаткові типи" #: src\SUMMARY.md:234 msgid "Building for Android: C++" msgstr "Збірка для Android: C++" #: src\SUMMARY.md:235 msgid "Building for Android: Genrules" msgstr "Збірка для Android: Genrules" #: src\SUMMARY.md:236 msgid "Building for Android: Rust" msgstr "Збірка для Android: Rust" #: src\SUMMARY.md:237 msgid "With Java" msgstr "З Java" #: src\SUMMARY.md:238 src\SUMMARY.md:302 src\SUMMARY.md:331 src\SUMMARY.md:354 #: src\SUMMARY.md:376 src\exercises/android/morning.md:1 #: src\exercises/bare-metal/morning.md:1 #: src\exercises/bare-metal/afternoon.md:1 #: src\exercises/concurrency/morning.md:1 #: src\exercises/concurrency/afternoon.md:1 msgid "Exercises" msgstr "Вправи" #: src\SUMMARY.md:242 msgid "Chromium" msgstr "Chromium" #: src\SUMMARY.md:248 src\chromium/cargo.md:1 msgid "Comparing Chromium and Cargo Ecosystems" msgstr "Порівняння екосистем Chromium і Cargo" #: src\SUMMARY.md:249 msgid "Policy" msgstr "Політика" #: src\SUMMARY.md:251 msgid "Unsafe Code" msgstr "Небезпечний код" #: src\SUMMARY.md:252 src\chromium/build-rules/depending.md:1 msgid "Depending on Rust Code from Chromium C++" msgstr "Залежнісь Chromium C++ від коду Rust" #: src\SUMMARY.md:253 src\chromium/build-rules/vscode.md:1 msgid "Visual Studio Code" msgstr "Visual Studio Code" #: src\SUMMARY.md:254 src\SUMMARY.md:258 src\SUMMARY.md:266 src\SUMMARY.md:279 #: src\exercises/chromium/third-party.md:1 msgid "Exercise" msgstr "Вправи" #: src\SUMMARY.md:256 src\chromium/testing/rust-gtest-interop.md:1 msgid "`rust_gtest_interop` Library" msgstr "Бібліотека `rust_gtest_interop`" #: src\SUMMARY.md:257 src\chromium/testing/build-gn.md:1 msgid "GN Rules for Rust Tests" msgstr "Правила GN для тестів Rust" #: src\SUMMARY.md:259 src\chromium/interoperability-with-cpp.md:1 msgid "Interoperability with C++" msgstr "Взаємодія з C" #: src\SUMMARY.md:260 #: src\chromium/interoperability-with-cpp/example-bindings.md:1 msgid "Example Bindings" msgstr "Приклади прив'язок" #: src\SUMMARY.md:261 #: src\chromium/interoperability-with-cpp/limitations-of-cxx.md:1 msgid "Limitations of CXX" msgstr "Обмеження CXX" #: src\SUMMARY.md:262 #: src\chromium/interoperability-with-cpp/error-handling.md:1 msgid "CXX Error Handling" msgstr "Обробка помилок в CXX" #: src\SUMMARY.md:263 msgid "Error Handling: QR Example" msgstr "Обробка помилок: приклад QR" #: src\SUMMARY.md:264 msgid "Error Handling: PNG Example" msgstr "Обробка помилок: приклад PNG" #: src\SUMMARY.md:265 msgid "Using CXX in Chromium" msgstr "Використання CXX у Chromium" #: src\SUMMARY.md:267 src\chromium/adding-third-party-crates.md:1 msgid "Adding Third Party Crates" msgstr "Додавання крейтів третіх сторін" #: src\SUMMARY.md:268 msgid "Configuring Cargo.toml" msgstr "Налаштування Cargo.toml" #: src\SUMMARY.md:269 #: src\chromium/adding-third-party-crates/configuring-gnrt-config-toml.md:1 msgid "Configuring `gnrt_config.toml`" msgstr "Налаштування `gnrt_config.toml`" #: src\SUMMARY.md:270 #: src\chromium/adding-third-party-crates/downloading-crates.md:1 msgid "Downloading Crates" msgstr "Завантаження крейтів" #: src\SUMMARY.md:271 #: src\chromium/adding-third-party-crates/generating-gn-build-rules.md:1 msgid "Generating `gn` Build Rules" msgstr "Створення правил побудови `gn`" #: src\SUMMARY.md:272 #: src\chromium/adding-third-party-crates/resolving-problems.md:1 msgid "Resolving Problems" msgstr "Вирішення проблем" #: src\SUMMARY.md:273 #: src\chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md:1 msgid "Build Scripts Which Generate Code" msgstr "Скрипти збірки, які генерують код" #: src\SUMMARY.md:274 #: src\chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md:1 msgid "Build Scripts Which Build C++ or Take Arbitrary Actions" msgstr "Скрипти збірки, які будують C++ або виконують довільні дії" #: src\SUMMARY.md:275 #: src\chromium/adding-third-party-crates/depending-on-a-crate.md:1 msgid "Depending on a Crate" msgstr "Залежнісь від крейта" #: src\SUMMARY.md:276 msgid "Reviews and Audits" msgstr "Перевірки та аудити" #: src\SUMMARY.md:277 msgid "Checking into Chromium Source Code" msgstr "Реєстрація в Chromium Source Code" #: src\SUMMARY.md:278 #: src\chromium/adding-third-party-crates/keeping-up-to-date.md:1 msgid "Keeping Crates Up to Date" msgstr "Підтримання крейтів в актуальному стані" #: src\SUMMARY.md:280 msgid "Bringing It Together - Exercise" msgstr "Зібрання усього разом - вправа" #: src\SUMMARY.md:281 src\exercises/chromium/solutions.md:1 msgid "Exercise Solutions" msgstr "Рішення вправ" #: src\SUMMARY.md:284 msgid "Bare Metal: Morning" msgstr "Залізо: Ранок" #: src\SUMMARY.md:289 src\bare-metal/no_std.md:1 msgid "`no_std`" msgstr "`no_std`" #: src\SUMMARY.md:290 msgid "A Minimal Example" msgstr "Мінімальний приклад" #: src\SUMMARY.md:291 src\bare-metal/no_std.md:12 src\bare-metal/alloc.md:1 msgid "`alloc`" msgstr "`alloc`" #: src\SUMMARY.md:292 src\bare-metal/microcontrollers.md:1 msgid "Microcontrollers" msgstr "Мікроконтролери" #: src\SUMMARY.md:293 src\bare-metal/microcontrollers/mmio.md:1 msgid "Raw MMIO" msgstr "Сирий ввід вивід з відображеної пам'яті (MMIO)" #: src\SUMMARY.md:294 msgid "PACs" msgstr "Крейти доступу до периферійних пристроїв (PACs)" #: src\SUMMARY.md:295 msgid "HAL Crates" msgstr "Крейти абстракції обладнання (HAL)" #: src\SUMMARY.md:296 msgid "Board Support Crates" msgstr "Крейти підтримки плат" #: src\SUMMARY.md:297 msgid "The Type State Pattern" msgstr "Шаблон стану типу" #: src\SUMMARY.md:298 src\bare-metal/microcontrollers/embedded-hal.md:1 msgid "`embedded-hal`" msgstr "`embedded-hal`" #: src\SUMMARY.md:299 src\bare-metal/microcontrollers/probe-rs.md:1 msgid "`probe-rs` and `cargo-embed`" msgstr "`probe-rs` та `cargo-embed`" #: src\SUMMARY.md:300 src\bare-metal/microcontrollers/debugging.md:1 msgid "Debugging" msgstr "Налагодження" #: src\SUMMARY.md:301 src\SUMMARY.md:322 msgid "Other Projects" msgstr "Інші проєкти" #: src\SUMMARY.md:303 src\exercises/bare-metal/compass.md:1 #: src\exercises/bare-metal/solutions-morning.md:3 msgid "Compass" msgstr "Компас" #: src\SUMMARY.md:304 src\SUMMARY.md:333 src\SUMMARY.md:357 src\SUMMARY.md:379 msgid "Solutions" msgstr "Рішення" #: src\SUMMARY.md:306 msgid "Bare Metal: Afternoon" msgstr "Залізо: Полудень" #: src\SUMMARY.md:308 msgid "Application Processors" msgstr "Прикладні процесори" #: src\SUMMARY.md:309 src\bare-metal/aps/entry-point.md:1 msgid "Getting Ready to Rust" msgstr "Підготовка до Rust" #: src\SUMMARY.md:310 msgid "Inline Assembly" msgstr "Вбудована збірка" #: src\SUMMARY.md:311 msgid "MMIO" msgstr "Ввід вивід з відображеної пам'яті (MMIO)" #: src\SUMMARY.md:312 msgid "Let's Write a UART Driver" msgstr "Давайте напишемо драйвер UART" #: src\SUMMARY.md:313 msgid "More Traits" msgstr "Більше трейтів" #: src\SUMMARY.md:314 msgid "A Better UART Driver" msgstr "Кращий драйвер UART" #: src\SUMMARY.md:315 src\bare-metal/aps/better-uart/bitflags.md:1 msgid "Bitflags" msgstr "Бітові прапорці (крейт bitflags)" #: src\SUMMARY.md:316 msgid "Multiple Registers" msgstr "Кілька регістрів" #: src\SUMMARY.md:317 src\bare-metal/aps/better-uart/driver.md:1 msgid "Driver" msgstr "Драйвер" #: src\SUMMARY.md:318 src\SUMMARY.md:320 msgid "Using It" msgstr "Його використання" #: src\SUMMARY.md:321 src\bare-metal/aps/exceptions.md:1 msgid "Exceptions" msgstr "Виключення" #: src\SUMMARY.md:324 src\bare-metal/useful-crates/zerocopy.md:1 msgid "`zerocopy`" msgstr "`zerocopy`" #: src\SUMMARY.md:325 src\bare-metal/useful-crates/aarch64-paging.md:1 msgid "`aarch64-paging`" msgstr "`aarch64-paging`" #: src\SUMMARY.md:326 src\bare-metal/useful-crates/buddy_system_allocator.md:1 msgid "`buddy_system_allocator`" msgstr "`buddy_system_allocator`" #: src\SUMMARY.md:327 src\bare-metal/useful-crates/tinyvec.md:1 msgid "`tinyvec`" msgstr "`tinyvec`" #: src\SUMMARY.md:328 src\bare-metal/useful-crates/spin.md:1 msgid "`spin`" msgstr "`spin`" #: src\SUMMARY.md:330 msgid "`vmbase`" msgstr "`vmbase`" #: src\SUMMARY.md:332 msgid "RTC Driver" msgstr "Драйвер годинника реального часу (RTC)" #: src\SUMMARY.md:336 msgid "Concurrency: Morning" msgstr "Паралелізм: Ранок" #: src\SUMMARY.md:341 src\concurrency/threads.md:1 msgid "Threads" msgstr "Потоки" #: src\SUMMARY.md:342 src\concurrency/scoped-threads.md:1 msgid "Scoped Threads" msgstr "Потоки з областю видимості" #: src\SUMMARY.md:343 src\concurrency/channels.md:1 msgid "Channels" msgstr "Канали" #: src\SUMMARY.md:344 src\concurrency/channels/unbounded.md:1 msgid "Unbounded Channels" msgstr "Незав'язані канали" #: src\SUMMARY.md:345 src\concurrency/channels/bounded.md:1 msgid "Bounded Channels" msgstr "Зав'язані канали" #: src\SUMMARY.md:346 src\concurrency/send-sync.md:1 msgid "`Send` and `Sync`" msgstr "`Send` та `Sync`" #: src\SUMMARY.md:347 src\concurrency/send-sync/send.md:1 msgid "`Send`" msgstr "`Send`" #: src\SUMMARY.md:348 src\concurrency/send-sync/sync.md:1 msgid "`Sync`" msgstr "`Sync`" #: src\SUMMARY.md:349 src\concurrency/send-sync/examples.md:1 msgid "Examples" msgstr "Приклади" #: src\SUMMARY.md:350 src\concurrency/shared_state.md:1 msgid "Shared State" msgstr "Спільний стан" #: src\SUMMARY.md:351 src\concurrency/shared_state/arc.md:1 msgid "`Arc`" msgstr "`Arc`" #: src\SUMMARY.md:352 src\concurrency/shared_state/mutex.md:1 msgid "`Mutex`" msgstr "`Mutex`" #: src\SUMMARY.md:353 src\memory-management/review.md:16 #: src\error-handling/try-conversions.md:22 #: src\concurrency/shared_state/example.md:1 msgid "Example" msgstr "Приклад" #: src\SUMMARY.md:355 src\SUMMARY.md:377 #: src\exercises/concurrency/dining-philosophers.md:1 #: src\exercises/concurrency/solutions-morning.md:3 msgid "Dining Philosophers" msgstr "Обідаючи філософи" #: src\SUMMARY.md:356 src\exercises/concurrency/link-checker.md:1 msgid "Multi-threaded Link Checker" msgstr "Перевірка багатопоточних посилань" #: src\SUMMARY.md:359 msgid "Concurrency: Afternoon" msgstr "Паралельність: після обіду" #: src\SUMMARY.md:361 msgid "Async Basics" msgstr "Основи асинхронізації" #: src\SUMMARY.md:362 src\async/async-await.md:1 msgid "`async`/`await`" msgstr "`async`/`await`" #: src\SUMMARY.md:363 src\async/futures.md:1 msgid "Futures" msgstr "Futures" #: src\SUMMARY.md:364 src\async/runtimes.md:1 msgid "Runtimes" msgstr "Середовища виконання" #: src\SUMMARY.md:365 src\async/runtimes/tokio.md:1 msgid "Tokio" msgstr "Токіо" #: src\SUMMARY.md:366 src\exercises/concurrency/link-checker.md:126 #: src\async/tasks.md:1 src\exercises/concurrency/chat-app.md:143 msgid "Tasks" msgstr "Завдання" #: src\SUMMARY.md:367 src\async/channels.md:1 msgid "Async Channels" msgstr "Асинхронні канали" #: src\SUMMARY.md:368 msgid "Control Flow" msgstr "Потік контролю" #: src\SUMMARY.md:369 src\async/control-flow/join.md:1 msgid "Join" msgstr "Join" #: src\SUMMARY.md:370 src\async/control-flow/select.md:1 msgid "Select" msgstr "Select" #: src\SUMMARY.md:371 msgid "Pitfalls" msgstr "Підводні камені" #: src\SUMMARY.md:372 msgid "Blocking the Executor" msgstr "Блокування Виконавця" #: src\SUMMARY.md:373 src\async/pitfalls/pin.md:1 msgid "`Pin`" msgstr "`Pin`" #: src\SUMMARY.md:374 src\async/pitfalls/async-traits.md:1 msgid "Async Traits" msgstr "Асинхронні Трейти" #: src\SUMMARY.md:375 src\async/pitfalls/cancellation.md:1 msgid "Cancellation" msgstr "Скасування" #: src\SUMMARY.md:378 src\exercises/concurrency/chat-app.md:1 #: src\exercises/concurrency/solutions-afternoon.md:95 msgid "Broadcast Chat Application" msgstr "Програма широкомовного чату" #: src\SUMMARY.md:382 msgid "Final Words" msgstr "Заключні слова" #: src\SUMMARY.md:386 src\thanks.md:1 msgid "Thanks!" msgstr "Дякую!" #: src\SUMMARY.md:387 src\glossary.md:1 msgid "Glossary" msgstr "Глосарій" #: src\SUMMARY.md:388 msgid "Other Resources" msgstr "Інші ресурси" #: src\SUMMARY.md:389 src\credits.md:1 msgid "Credits" msgstr "Кредити" #: src\index.md:3 msgid "" "[![Build workflow](https://img.shields.io/github/actions/workflow/status/" "google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/" "google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain) [!" "[GitHub contributors](https://img.shields.io/github/contributors/google/" "comprehensive-rust?style=flat-square)](https://github.com/google/" "comprehensive-rust/graphs/contributors) [![GitHub stars](https://img.shields." "io/github/stars/google/comprehensive-rust?style=flat-square)](https://github." "com/google/comprehensive-rust/stargazers)" msgstr "" "[![Робочий процес створення](https://img.shields.io/github/actions/workflow/" "status/google/comprehensive-rust/build.yml?style=flat-square)](https://" "github.com /google/comprehensive-rust/actions/workflows/build.yml?" "query=branch%3Amain) [![Учасники GitHub](https://img.shields.io/github/" "contributors/google/comprehensive-rust?style=flat-square)](https://github." "com/google/comprehensive-rust/graphs/contributors) [![зірки GitHub](https://" "img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)]" "(https://github.com/google/comprehensive-rust/stargazers)" #: src\index.md:7 msgid "" "This is a free Rust course developed by the Android team at Google. The " "course covers the full spectrum of Rust, from basic syntax to advanced " "topics like generics and error handling." msgstr "" "Це безкоштовний курс Rust, розроблений командою Android у Google. Курс " "охоплює весь спектр Rust, від базового синтаксиса до складних тем, таких як " "узагальнення (generics) и обробка помилок." #: src\index.md:11 msgid "" "The latest version of the course can be found at . If you are reading somewhere else, please check there " "for updates." msgstr "" "Останню версію курсу можна знайти за адресою . Якщо ви читаєте десь в іншому місці, перевіряйте там " "на оновлення." #: src\index.md:15 msgid "" "The goal of the course is to teach you Rust. We assume you don't know " "anything about Rust and hope to:" msgstr "" "Ціль курсу навчити вас мові Rust. Ми припускаємо, що ви нічого не знаєте про " "Rust и сподіваємося:" #: src\index.md:18 msgid "Give you a comprehensive understanding of the Rust syntax and language." msgstr "Дати вам повне уявлення про синтаксис та семантику мови Rust." #: src\index.md:19 msgid "Enable you to modify existing programs and write new programs in Rust." msgstr "Навчити працювати з існуючим кодом та писати нові програми на Rust." #: src\index.md:20 msgid "Show you common Rust idioms." msgstr "Показати розповсюджені ідіоми мови Rust." #: src\index.md:22 msgid "We call the first four course days Rust Fundamentals." msgstr "Перші чотири дні курсу ми називаємо Rust Fundamentals." #: src\index.md:24 msgid "" "Building on this, you're invited to dive into one or more specialized topics:" msgstr "" "Спираючись на це, вам пропонується зануритися в одну або кілька " "спеціалізованих тем:" #: src\index.md:26 msgid "" "[Android](android.md): a half-day course on using Rust for Android platform " "development (AOSP). This includes interoperability with C, C++, and Java." msgstr "" "[Android](android.md): розрахований на половину дня курс з використання Rust " "для розробки на платформі Android (AOSP). Сюди входить взаємодія з C, C++ та " "Java." #: src\index.md:28 msgid "" "[Chromium](chromium.md): a half-day course on using Rust within Chromium " "based browsers. This includes interoperability with C++ and how to include " "third-party crates in Chromium." msgstr "" "[Chromium](chromium.md): розрахований на половину дня курс курс із " "використання Rust у браузерах на основі Chromium. Сюди входить взаємодія з C+" "+ та як включити крейти сторонніх розробників у Chromium." #: src\index.md:31 msgid "" "[Bare-metal](bare-metal.md): a whole-day class on using Rust for bare-metal " "(embedded) development. Both microcontrollers and application processors are " "covered." msgstr "" "[Голе залізо](bare-metal.md): одноденне заняття з використання Rust для " "низькорівневої (embedded) розробки, що охоплює як мікроконтролери, так і " "звичайні процесори." #: src\index.md:34 msgid "" "[Concurrency](concurrency.md): a whole-day class on concurrency in Rust. We " "cover both classical concurrency (preemptively scheduling using threads and " "mutexes) and async/await concurrency (cooperative multitasking using " "futures)." msgstr "" "[Concurrency](concurrency.md): повний день занять з вивчення конкурентності " "у Rust. Ми розглянемо як класичну конкурентність (витіснюючи " "багатозадачність з використанням потоків і м'ютексів), так і async/await " "конкурентність (кооперативна багатозадачність з використанням futures)." #: src\index.md:40 msgid "Non-Goals" msgstr "За рамками курсу" #: src\index.md:42 msgid "" "Rust is a large language and we won't be able to cover all of it in a few " "days. Some non-goals of this course are:" msgstr "" "Rust це об'ємна мова, і ми не зможемо охопити її за кілька днів. Теми, що " "виходять за межі курсу:" #: src\index.md:45 msgid "" "Learning how to develop macros: please see [Chapter 19.5 in the Rust Book]" "(https://doc.rust-lang.org/book/ch19-06-macros.html) and [Rust by Example]" "(https://doc.rust-lang.org/rust-by-example/macros.html) instead." msgstr "" "Написання макросів, будь ласка подивіться [Розділ 19.5 у The Rust Book]" "(https://doc.rust-lang.org/book/ch19-06-macros.html) та [Rust by Example]" "(https://doc.rust-lang.org/rust-by-example/macros.html)." #: src\index.md:49 msgid "Assumptions" msgstr "Припущення" #: src\index.md:51 msgid "" "The course assumes that you already know how to program. Rust is a " "statically-typed language and we will sometimes make comparisons with C and " "C++ to better explain or contrast the Rust approach." msgstr "" "Передбачається, що ви вже можете програмувати. Rust це статично типізована " "мова, і іноді ми порівнюватимемо і зіставлятимемо її з C та C++, щоб краще " "пояснити чи підкреслити різницю у підходах до написання коду на Rust." #: src\index.md:55 msgid "" "If you know how to program in a dynamically-typed language such as Python or " "JavaScript, then you will be able to follow along just fine too." msgstr "" "Якщо ви знаєте, як програмувати мовою з динамічною типізацією, наприклад " "Python або JavaScript, ви зможете також успішно пройти цей курс." #: src\index.md:60 msgid "" "This is an example of a _speaker note_. We will use these to add additional " "information to the slides. This could be key points which the instructor " "should cover as well as answers to typical questions which come up in class." msgstr "" "Це приклад _нотаток для викладача_. Ми будемо використовувати їх для " "додавання додаткової інформації до слайдів. Це можуть бути ключові моменти, " "які викладач повинен висвітлити, а також відповіді на типові питання, що " "виникають під час проходження курсу." #: src\running-the-course.md:3 src\running-the-course/course-structure.md:3 msgid "This page is for the course instructor." msgstr "Ця сторінка призначена для викладача курсу." #: src\running-the-course.md:5 msgid "" "Here is a bit of background information about how we've been running the " "course internally at Google." msgstr "" "Ось коротка довідкова інформація про те, як ми проводили цей курс всередині " "Google." #: src\running-the-course.md:8 msgid "" "We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break " "in the middle. This leaves 3 hours for the morning class and 3 hours for the " "afternoon class. Both sessions contain multiple breaks and time for students " "to work on exercises." msgstr "" "Зазвичай ми проводимо заняття з 9:00 до 16:00, з 1-годинною перервою на обід " "посередині. Це залишає 3 години для ранкового заняття та 3 години для " "післяобіднього заняття. Обидві сесії містять кілька перерв і час для роботи " "студентів над вправами." #: src\running-the-course.md:13 msgid "Before you run the course, you will want to:" msgstr "Перед проведенням курсу бажано:" #: src\running-the-course.md:15 msgid "" "Make yourself familiar with the course material. We've included speaker " "notes to help highlight the key points (please help us by contributing more " "speaker notes!). When presenting, you should make sure to open the speaker " "notes in a popup (click the link with a little arrow next to \"Speaker " "Notes\"). This way you have a clean screen to present to the class." msgstr "" "Ознайомитись з матеріалами курсу. Ми додали нотатки для викладача на деяких " "сторінках, щоб виділити ключові моменти (будь ласка, допомагайте нам, " "додаючи свої нотатки для викладачів!). Під час презентації переконайтеся, що " "відкрили нотатки для викладача у спливаючому вікні (натисніть на посилання з " "маленькою стрілкою поруч з \"Нотатки для викладача\"). Таким чином ви " "матимете чистий екран, який можна представити класу." #: src\running-the-course.md:21 msgid "" "Decide on the dates. Since the course takes four days, we recommend that you " "schedule the days over two weeks. Course participants have said that they " "find it helpful to have a gap in the course since it helps them process all " "the information we give them." msgstr "" "Визначитись з датами. Оскільки курс вимагає щонайменше чотири дні, ми " "рекомендуємо вам запланувати ці дні протягом двох тижнів. Учасники курсу " "сказали, що вони вважають корисним наявність прогалин у курсі, оскільки це " "допомагає їм обробити всю інформацію, яку ми їм надаємо." #: src\running-the-course.md:26 msgid "" "Find a room large enough for your in-person participants. We recommend a " "class size of 15-25 people. That's small enough that people are comfortable " "asking questions --- it's also small enough that one instructor will have " "time to answer the questions. Make sure the room has _desks_ for yourself " "and for the students: you will all need to be able to sit and work with your " "laptops. In particular, you will be doing a lot of live-coding as an " "instructor, so a lectern won't be very helpful for you." msgstr "" "Знайти приміщення досить просторе для очної участі. Ми рекомендуємо, щоб у " "класі було 15-20 чоловік. Це досить небагато для того, щоб людям було " "комфортно ставити запитання --- також достатньо мало, щоб один інструктор " "мав час відповісти на запитання. Переконайтеся, що в кімнаті є _парти_ для " "вас і для студентів: ви всі повинні мати можливість сидіти і працювати за " "своїми ноутбуками. Зокрема, ви будете виконувати багато програмування в " "реальному часі як інструктор, тому кафедра вам не дуже допоможе." #: src\running-the-course.md:34 msgid "" "On the day of your course, show up to the room a little early to set things " "up. We recommend presenting directly using `mdbook serve` running on your " "laptop (see the [installation instructions](https://github.com/google/" "comprehensive-rust#building)). This ensures optimal performance with no lag " "as you change pages. Using your laptop will also allow you to fix typos as " "you or the course participants spot them." msgstr "" "У день заняття приходьте в кімнату трохи раніше, щоби все підготувати. Ми " "рекомендуємо презентувати безпосередньо за допомогою `mdbook serve`, " "запущеного на вашому ноутбуці (дивиться [installation instructions](https://" "github.com/google/comprehensive-rust#building)). Це забезпечує оптимальну " "продуктивність без затримок під час зміни сторінок. Використання ноутбука " "також дозволить вам виправляти друкарські помилки в міру їх виявлення вами " "або учасниками курсу." #: src\running-the-course.md:40 msgid "" "Let people solve the exercises by themselves or in small groups. We " "typically spend 30-45 minutes on exercises in the morning and in the " "afternoon (including time to review the solutions). Make sure to ask people " "if they're stuck or if there is anything you can help with. When you see " "that several people have the same problem, call it out to the class and " "offer a solution, e.g., by showing people where to find the relevant " "information in the standard library." msgstr "" "Дозвольте учасникам вирішувати вправи самостійно або у невеликих групах. " "Зазвичай ми приділяємо вправам по 30-45 хвилин вранці та у другій половині " "дня (включаючи час на розбір рішень). Обов'язково запитуйте людей, чи не " "мають вони труднощів і чи є щось, з чим ви можете допомогти. Коли ви бачите, " "що у кількох людей одна і та ж проблема, повідомте про цей клас і " "запропонуйте рішення, наприклад, показавши, де знайти відповідну інформацію " "у стандартній бібліотеці." #: src\running-the-course.md:48 msgid "" "That is all, good luck running the course! We hope it will be as much fun " "for you as it has been for us!" msgstr "" "На цьому все, удачі у проходженні курсу! Ми сподіваємося, що вам буде так " "само весело, як і нам!" #: src\running-the-course.md:51 msgid "" "Please [provide feedback](https://github.com/google/comprehensive-rust/" "discussions/86) afterwards so that we can keep improving the course. We " "would love to hear what worked well for you and what can be made better. " "Your students are also very welcome to [send us feedback](https://github.com/" "google/comprehensive-rust/discussions/100)!" msgstr "" "Будь ласка, [залишіть відгук](https://github.com/google/comprehensive-rust/" "discussions/86), щоб ми могли продовжувати удосконалювати курс. Ми хотіли б " "почути, що було добре і що можна зробити краще. Ваші студенти також можуть " "[надіслати нам свої відгуки](https://github.com/google/comprehensive-rust/" "discussions/100)!" #: src\running-the-course/course-structure.md:5 msgid "Rust Fundamentals" msgstr "Основи Rust" #: src\running-the-course/course-structure.md:7 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!" 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:12 msgid "Deep Dives" msgstr "Глибоке занурення" #: src\running-the-course/course-structure.md:14 msgid "" "In addition to the 4-day class on Rust Fundamentals, we cover some more " "specialized topics:" msgstr "" "На додаток до 4-денного курсу з основ Rust, ми розглянемо ще кілька " "спеціалізованих тем:" #: src\running-the-course/course-structure.md:17 msgid "Rust in Android" msgstr "Rust в Android" #: src\running-the-course/course-structure.md:19 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 " "C, C++, and Java." msgstr "" "[Rust в Android](../android.md) --- це напівденний курс з використання Rust " "для розробки на Android платформі. Сюди входить взаємодія з C, C++ та Java." #: src\running-the-course/course-structure.md:23 msgid "" "You will need an [AOSP checkout](https://source.android.com/docs/setup/" "download/downloading). Make a checkout of the [course repository](https://" "github.com/google/comprehensive-rust) on the same machine and move the `src/" "android/` directory into the root of your AOSP checkout. This will ensure " "that the Android build system sees the `Android.bp` files in `src/android/`." msgstr "" "Вам знадобиться [AOSP](https://source.android.com/docs/setup/download/" "downloading). Завантажте [репозиторій курсу](https://github.com/google/" "comprehensive-rust) на той же комп'ютер, що і курс та перемістіть каталог " "`src/android/` в кореневий каталог вашого AOSP. Це гарантує, що система " "збирання Android побачить файли `Android.bp` в `src/android/`." #: src\running-the-course/course-structure.md:28 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 " "see the commands it runs and make sure they work when you run them by hand." msgstr "" "Переконайтеся, що `adb sync` працює з вашим емулятором або реальним " "пристроєм, та попередньо зберіть усі приклади Android, використовуючи `src/" "android/build_all.sh`. Прочитайте скрипт, щоб побачити команди, які він " "запускає, і переконайтеся, що вони працюють, коли ви запускаєте їх вручну." #: src\running-the-course/course-structure.md:35 msgid "Rust in Chromium" msgstr "Rust в Chromium" #: src\running-the-course/course-structure.md:37 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 " "Chromium's `gn` build system, bringing in third-party libraries (\"crates\") " "and C++ interoperability." msgstr "" "Глибоке занурення [Rust in Chromium](../chromium.md) — це південний курс із " "використання Rust як частини браузера Chromium. Він включає використання " "Rust у системі збирання `gn` Chromium, залучення сторонніх бібліотек " "(\"крейтів\") і взаємодію з C++." #: src\running-the-course/course-structure.md:42 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. " "Ensure that you can run the Chromium browser that you've built." msgstr "" "Вам потрібно буде мати можливість зібрати Chromium --- налагодженна, " "компонентна побудова [рекомендується](../chromium/setup.md) для швидкості, " "але будь-яка збірка буде працювати. Переконайтеся, що ви можете запустити " "веб-переглядач Chromium, який ви побудували." #: src\running-the-course/course-structure.md:46 msgid "Bare-Metal Rust" msgstr "Rust на голому залізі" #: src\running-the-course/course-structure.md:48 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 " "application processors are covered." msgstr "" "[Rust на голому залізі](../bare-metal.md): заняття на повний день з " "використання Rust для низькорівневої (embedded) розробки. Розглядаються як " "мікроконтролери, так і прикладні процесори." #: src\running-the-course/course-structure.md:52 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 " "need to install a number of packages as described on the [welcome page](../" "bare-metal.md)." msgstr "" "Щодо частини мікроконтролерів, то вам потрібно буде заздалегідь придбати " "плату розробки [BBC micro:bit](https://microbit.org/) v2. Усім потрібно " "встановити кілька пакетів, як описано на [сторінці привітання](../bare-metal." "md)." #: src\running-the-course/course-structure.md:57 msgid "Concurrency in Rust" msgstr "Конкурентність в Rust" #: src\running-the-course/course-structure.md:59 msgid "" "The [Concurrency in Rust](../concurrency.md) deep dive is a full day class " "on classical as well as `async`/`await` concurrency." msgstr "" "[Конкурентність в Rust](../concurrency.md) це цілий день занять з класичної, " "а також `async`/`await` конкурентності." #: src\running-the-course/course-structure.md:62 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 " "with them:" msgstr "" "Вам знадобиться налаштований новий крейт, а також завантажені залежності " "готові до роботи. Потім ви сможете скопіювати приклади в `src/main.rs`, щоб " "поекспериментувати з ними:" #: src\running-the-course/course-structure.md:73 msgid "Format" msgstr "Формат" #: src\running-the-course/course-structure.md:75 msgid "" "The course is meant to be very interactive and we recommend letting the " "questions drive the exploration of Rust!" msgstr "" "Курс задуманий дуже інтерактивним, і ми рекомендуємо, щоб питання сприяли " "вивченню Rust!" #: src\running-the-course/keyboard-shortcuts.md:3 msgid "There are several useful keyboard shortcuts in mdBook:" msgstr "У mdBook є кілька корисних поєднань клавіш:" #: src\running-the-course/keyboard-shortcuts.md:5 msgid "Arrow-Left" msgstr "Стрілка вліво" #: src\running-the-course/keyboard-shortcuts.md:5 msgid ": Navigate to the previous page." msgstr ": Перехід на попередню сторінку." #: src\running-the-course/keyboard-shortcuts.md:6 msgid "Arrow-Right" msgstr "Стрілка вправо" #: src\running-the-course/keyboard-shortcuts.md:6 msgid ": Navigate to the next page." msgstr ": Перехід до наступної сторінки." #: src\running-the-course/keyboard-shortcuts.md:7 src\cargo/code-samples.md:19 msgid "Ctrl + Enter" msgstr "Ctrl + Enter" #: src\running-the-course/keyboard-shortcuts.md:7 msgid ": Execute the code sample that has focus." msgstr ": Виконати приклад коду, який знаходиться у фокусі." #: src\running-the-course/keyboard-shortcuts.md:8 msgid "s" msgstr "s" #: src\running-the-course/keyboard-shortcuts.md:8 msgid ": Activate the search bar." msgstr ": Активувати панель пошуку." #: src\running-the-course/translations.md:3 msgid "" "The course has been translated into other languages by a set of wonderful " "volunteers:" msgstr "Курс був перекладений іншими мовами групою чудових волонтерів:" #: src\running-the-course/translations.md:6 msgid "" "[Brazilian Portuguese](https://google.github.io/comprehensive-rust/pt-BR/) " "by [@rastringer](https://github.com/rastringer), [@hugojacob](https://github." "com/hugojacob), [@joaovicmendes](https://github.com/joaovicmendes), and " "[@henrif75](https://github.com/henrif75)." msgstr "" "[Бразильска Португальська](https://google.github.io/comprehensive-rust/pt-" "BR/) від [@rastringer](https://github.com/rastringer), [@hugojacob](https://" "github.com/hugojacob), [@joaovicmendes](https://github.com/joaovicmendes), " "та [@henrif75](https://github.com/henrif75)." #: src\running-the-course/translations.md:7 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)." 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)." #: src\running-the-course/translations.md:8 msgid "" "[Chinese (Traditional)](https://google.github.io/comprehensive-rust/zh-TW/) " "by [@hueich](https://github.com/hueich), [@victorhsieh](https://github.com/" "victorhsieh), [@mingyc](https://github.com/mingyc), [@kuanhungchen](https://" "github.com/kuanhungchen), and [@johnathan79717](https://github.com/" "johnathan79717)." msgstr "" "[Китайська (традиційна)](https://google.github.io/comprehensive-rust/zh-TW/) " "від [@hueich](https://github.com/hueich), [@victorhsieh](https://github.com/" "victorhsieh), [@mingyc](https://github.com/mingyc), [@kuanhungchen](https://" "github.com/kuanhungchen), and [@johnathan79717](https://github.com/" "johnathan79717)." #: src\running-the-course/translations.md:9 msgid "" "[Korean](https://google.github.io/comprehensive-rust/ko/) by [@keispace]" "(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp), and " "[@jooyunghan](https://github.com/jooyunghan)." msgstr "" "[Корейска](https://google.github.io/comprehensive-rust/ko/) від [@keispace]" "(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp) та " "[@jooyunghan](https://github.com/jooyunghan)." #: src\running-the-course/translations.md:10 msgid "" "[Spanish](https://google.github.io/comprehensive-rust/es/) by [@deavid]" "(https://github.com/deavid)." msgstr "" "[Іспанська](https://google.github.io/comprehensive-rust/es) від [@deavid]" "(https://github.com/deavid)." #: src\running-the-course/translations.md:12 msgid "" "Use the language picker in the top-right corner to switch between languages." msgstr "" "Використовуйте кнопку вибору мови у верхньому правому куті для перемикання " "між мовами." #: src\running-the-course/translations.md:14 msgid "Incomplete Translations" msgstr "Незавершені переклади" #: src\running-the-course/translations.md:16 msgid "" "There is a large number of in-progress translations. We link to the most " "recently updated translations:" msgstr "" "Існує велика кількість незавершених перекладів. Ми посилаємося на останні " "оновлені переклади:" #: src\running-the-course/translations.md:19 msgid "" "[Bengali](https://google.github.io/comprehensive-rust/bn/) by [@raselmandol]" "(https://github.com/raselmandol)." msgstr "" "[Бенгальська](https://google.github.io/comprehensive-rust/bn) від " "[@raselmandol](https://github.com/raselmandol)." #: src\running-the-course/translations.md:20 msgid "" "[French](https://google.github.io/comprehensive-rust/fr/) by [@KookaS]" "(https://github.com/KookaS) and [@vcaen](https://github.com/vcaen)." msgstr "" "[Французька](https://google.github.io/comprehensive-rust/fr/) від [@KookaS]" "(https://github.com/KookaS) і [@vcaen](https://github.com/vcaen)." #: src\running-the-course/translations.md:21 msgid "" "[German](https://google.github.io/comprehensive-rust/de/) by [@Throvn]" "(https://github.com/Throvn) and [@ronaldfw](https://github.com/ronaldfw)." msgstr "" "[Німецька](https://google.github.io/comprehensive-rust/de/) від [@Throvn]" "(https://github.com/Throvn) і [@ronaldfw](https://github.com/ronaldfw)." #: src\running-the-course/translations.md:22 msgid "" "[Japanese](https://google.github.io/comprehensive-rust/ja/) by [@CoinEZ-JPN]" "(https://github.com/CoinEZ) and [@momotaro1105](https://github.com/" "momotaro1105)." msgstr "" "[Японьска](https://google.github.io/comprehensive-rust/ja/) від [@CoinEZ-JPN]" "(https://github.com/CoinEZ) і [@momotaro1105](https://github.com/" "momotaro1105)." #: src\running-the-course/translations.md:24 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 " "get going. Translations are coordinated on the [issue tracker](https://" "github.com/google/comprehensive-rust/issues/282)." msgstr "" "Якщо ви хочете допомогти в цьому, будь ласка, ознайомтеся з [нашими " "інструкціями](https://github.com/google/comprehensive-rust/blob/main/" "TRANSLATIONS.md) про те, як розпочати роботу. Переклади координуються за " "допомогою [трекера проблем](https://github.com/google/comprehensive-rust/" "issues/282)." #: src\cargo.md:3 msgid "" "When you start reading about Rust, you will soon meet [Cargo](https://doc." "rust-lang.org/cargo/), the standard tool used in the Rust ecosystem to build " "and run Rust applications. Here we want to give a brief overview of what " "Cargo is and how it fits into the wider ecosystem and how it fits into this " "training." msgstr "" "Коли ви почнете читати про Rust, то незабаром познайомитеся з [Cargo]" "(https://doc.rust-lang.org/cargo/), стандартним інструментом, що " "використовується в екосистемі Rust для створення та запуску програм. Тут ми " "хочемо дати короткий огляд того, що таке Cargo і як він вписується в ширшу " "екосистему і в цей курс." #: src\cargo.md:8 msgid "Installation" msgstr "Встановлення" #: src\cargo.md:10 msgid "**Please follow the instructions on .**" msgstr "**Дотримуйтесь інструкцій на .**" #: src\cargo.md:12 msgid "" "This will give you the Cargo build tool (`cargo`) and the Rust compiler " "(`rustc`). You will also get `rustup`, a command line utility that you can " "use to install to different compiler versions." msgstr "" "Як результат, ви отримаэте інструмент побудови Cargo (`cargo`) та компілятор " "Rust (`rustc`). Ви також отримаэте `rustup`, утиліту командної стрічки, яку " "виможете використовувати для встановлення на різних версій компілятора." #: src\cargo.md:14 msgid "" "After installing Rust, you should configure your editor or IDE to work with " "Rust. Most editors do this by talking to [rust-analyzer](https://rust-" "analyzer.github.io/), which provides auto-completion and jump-to-definition " "functionality for [VS Code](https://code.visualstudio.com/), [Emacs](https://" "rust-analyzer.github.io/manual.html#emacs), [Vim/Neovim](https://rust-" "analyzer.github.io/manual.html#vimneovim), and many others. There is also a " "different IDE available called [RustRover](https://www.jetbrains.com/rust/)." msgstr "" "Після встановлення Rust вам слід налаштувати редактор або IDE для роботи з " "Rust. Більшість редакторів роблять це, звертаючись до [rust-analyzer]" "(https://rust-analyzer.github.io/), який забезпечує автозаповнення та " "функцію переходу до визначення для [VS Code](https://code .visualstudio." "com/), [Emacs](https://rust-analyzer.github.io/manual.html#emacs), [Vim/" "Neovim](https://rust-analyzer.github.io/manual. html#vimneovim), та багато " "інших. Існує також інша доступна IDE під назвою [RustRover](https://www." "jetbrains.com/rust/)." #: src\cargo.md:18 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 " "command would be:" msgstr "" "У Debian/Ubuntu ви можете встановити Cargo, вихідний код Rust та [Rust " "formatter](https://github.com/rust-lang/rustfmt) за допомогою `apt`. Однак " "це може призвести до встановлення застарілої версії Rust і неочікуваної " "поведінки. Використовуйте таку команду: " #: src\cargo/rust-ecosystem.md:1 msgid "The Rust Ecosystem" msgstr "Екосистема Rust" #: src\cargo/rust-ecosystem.md:3 msgid "" "The Rust ecosystem consists of a number of tools, of which the main ones are:" msgstr "Екосистема Rust складається з ряду інструментів, основними з яких є:" #: src\cargo/rust-ecosystem.md:5 msgid "" "`rustc`: the Rust compiler which turns `.rs` files into binaries and other " "intermediate formats." msgstr "" "`rustc`: компілятор Rust, який перетворює файли `.rs` на бінарні файли та " "інші проміжні формати." #: src\cargo/rust-ecosystem.md:8 msgid "" "`cargo`: the Rust dependency manager and build tool. Cargo knows how to " "download dependencies, usually hosted on , and it will " "pass them to `rustc` when building your project. Cargo also comes with a " "built-in test runner which is used to execute unit tests." msgstr "" "`cargo`: менеджер залежностей Rust та інструмент збірки. Cargo знає, як " "завантажити залежності, розміщені на , і передати їх " "`rustc` при збірці вашого проекту. Cargo також поставляється з вбудованим " "інструментом запуску тестів, який використовується для виконання модульних " "тестів." #: src\cargo/rust-ecosystem.md:13 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 " "released. In addition, `rustup` can also download documentation for the " "standard library. You can have multiple versions of Rust installed at once " "and `rustup` will let you switch between them as needed." msgstr "" "`rustup`: програма встановлення та оновлення набору інструментів Rust. Цей " "інструмент використовується для встановлення та оновлення `rustc` і `cargo` " "при виході нових версій Rust. Окрім того, `rustup` також може завантажувати " "документацію стандартної бібліотеки. Ви можете встановити кілька версій Rust " "одночасно і `rustup` дозволить вам перемикатися між ними за необхідності." #: src\cargo/rust-ecosystem.md:21 src\hello-world/hello-world.md:25 #: src\tuples-and-arrays/tuples-and-arrays.md:36 src\references/exclusive.md:18 #: src\pattern-matching/destructuring.md:67 src\memory-management/move.md:146 #: src\error-handling/try.md:52 src\android/setup.md:17 #: src\concurrency/threads.md:30 src\async/async-await.md:25 msgid "Key points:" msgstr "Ключові моменти:" #: src\cargo/rust-ecosystem.md:23 msgid "" "Rust has a rapid release schedule with a new release coming out every six " "weeks. New releases maintain backwards compatibility with old releases --- " "plus they enable new functionality." msgstr "" "У Rust стрімкий графік релізів: нова версія виходить кожні шість тижнів. " "Нові версії підтримують зворотну сумісність із старими версіями --- на " "додаток вони надають нові функціональні можливості." #: src\cargo/rust-ecosystem.md:27 msgid "" "There are three release channels: \"stable\", \"beta\", and \"nightly\"." msgstr "Існує три канали релізів: \"stable\", \"beta\" та \"nightly\"." #: src\cargo/rust-ecosystem.md:29 msgid "" "New features are being tested on \"nightly\", \"beta\" is what becomes " "\"stable\" every six weeks." msgstr "" "Нові функції тестуються на \"nightly\", \"beta\" це те, що стає \"stable\" " "кожні шість тижнів." #: src\cargo/rust-ecosystem.md:32 msgid "" "Dependencies can also be resolved from alternative [registries](https://doc." "rust-lang.org/cargo/reference/registries.html), git, folders, and more." msgstr "" "Залежності також можна вирішити за допомогою альтернативних [реєстрів]" "(https://doc.rust-lang.org/cargo/reference/registries.html), git, папок тощо." #: src\cargo/rust-ecosystem.md:34 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." msgstr "" "Rust також має \\[редакції\\]: поточна редакція це Rust 2021. Попередніми " "редакціями були Rust 2015 та Rust 2018." #: src\cargo/rust-ecosystem.md:37 msgid "" "The editions are allowed to make backwards incompatible changes to the " "language." msgstr "Редакціям дозволено вносити зворотно-несумісні зміни до мови." #: src\cargo/rust-ecosystem.md:40 msgid "" "To prevent breaking code, editions are opt-in: you select the edition for " "your crate via the `Cargo.toml` file." msgstr "" "Щоб уникнути збоїв коду, редакцію для свого пакета можна явно вказати у " "файлі `Cargo.toml`." #: src\cargo/rust-ecosystem.md:43 msgid "" "To avoid splitting the ecosystem, Rust compilers can mix code written for " "different editions." msgstr "" "Щоб уникнути поділу екосистеми, компілятор Rust може змішувати код, " "написаний для різних редакцій." #: src\cargo/rust-ecosystem.md:46 msgid "" "Mention that it is quite rare to ever use the compiler directly not through " "`cargo` (most users never do)." msgstr "" "Варто нагадати, що використання компілятора безпосередньо, а не через " "`cargo`, є рідкісним явищем (більшість користувачів ніколи цього не роблять)." #: src\cargo/rust-ecosystem.md:48 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 " "not limited to: " msgstr "" "Cargo сам по собі є надзвичайно потужним і всеосяжним інструментом. Він " "підтримує безліч додаткових функцій, включаючи, крім іншого: " #: src\cargo/rust-ecosystem.md:49 msgid "Project/package structure" msgstr "Структуру проекту/пакета" #: src\cargo/rust-ecosystem.md:50 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:51 msgid "Dev Dependencies and Runtime Dependency management/caching" msgstr "" "Управління/кешування залежностями для розробки (dev) та часу виконання " "(runtime)" #: src\cargo/rust-ecosystem.md:52 msgid "" "[build scripting](https://doc.rust-lang.org/cargo/reference/build-scripts." "html)" msgstr "" "[сценарії побудови](https://doc.rust-lang.org/cargo/reference/build-scripts." "html)" #: src\cargo/rust-ecosystem.md:53 msgid "" "[global installation](https://doc.rust-lang.org/cargo/commands/cargo-install." "html)" msgstr "" "[глобальна установка](https://doc.rust-lang.org/cargo/commands/cargo-install." "html)" #: src\cargo/rust-ecosystem.md:54 msgid "" "It is also extensible with sub command plugins as well (such as [cargo " "clippy](https://github.com/rust-lang/rust-clippy))." msgstr "" "Він також розширюється за допомогою плагінів підкоманд (таких як [cargo " "clippy](https://github.com/rust-lang/rust-clippy))." #: src\cargo/rust-ecosystem.md:55 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 msgid "Code Samples in This Training" msgstr "Приклади коду в цьому курсі" #: src\cargo/code-samples.md:3 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 " "and ensures a consistent experience for everyone." msgstr "" "У цьому курсі ми в основному вивчатимемо мову Rust на прикладах, які можуть " "бути виконані у вашому браузері. Це значно спрощує налаштування та " "забезпечує однаковий досвід для всіх." #: src\cargo/code-samples.md:7 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 " "how to work with dependencies and for that you need Cargo." msgstr "" "Встановлення Cargo, як і раніше, рекомендується: це полегшить виконання " "вправ. В останній день ми виконаємо більш масштабну вправу, яка покаже вам " "як працювати із залежностями, і для цього вам знадобиться Cargo." #: src\cargo/code-samples.md:11 msgid "The code blocks in this course are fully interactive:" msgstr "Блоки коду в цьому курсі є повністю інтерактивними:" #: src\cargo/code-samples.md:15 src\cargo/running-locally.md:45 msgid "\"Edit me!\"" msgstr "\"Відредагуте мене!\"" #: src\cargo/code-samples.md:19 msgid "You can use " msgstr "Ви можете використовувати " #: src\cargo/code-samples.md:19 msgid " to execute the code when focus is in the text box." msgstr "" " для виконання коду, коли фокус введення знаходиться в текстовому полі." #: src\cargo/code-samples.md:24 msgid "" "Most code samples are editable like shown above. A few code samples are not " "editable for various reasons:" msgstr "" "Більшість прикладів коду доступні для редагування, як показано вище. Кілька " "прикладів коду недоступні для редагування з різних причин:" #: src\cargo/code-samples.md:27 msgid "" "The embedded playgrounds cannot execute unit tests. Copy-paste the code and " "open it in the real Playground to demonstrate unit tests." msgstr "" "Вбудований у сторінку редактор коду не може запускати модульні тести. " "Скопіюйте код і відкрийте його в Rust Playground, щоб продемонструвати " "модульні тести." #: src\cargo/code-samples.md:30 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 " "using a local Rust installation or via the Playground." msgstr "" "Вбудовані в сторінку редактори коду втрачають свій стан у той момент, коли " "ви йдете зі сторінки! Саме з цієї причини учні повинні виконувати вправи, " "використовуючи локальну установку Rust або Rust Playground." #: src\cargo/running-locally.md:1 msgid "Running Code Locally with Cargo" msgstr "Запуск коду локально за допомогою Cargo" #: src\cargo/running-locally.md:3 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 " "Rust Book](https://doc.rust-lang.org/book/ch01-01-installation.html). This " "should give you a working `rustc` and `cargo`. At the time of writing, the " "latest stable Rust release has these version numbers:" msgstr "" "Якщо ви хочете поекспериментувати з кодом на своїй системі, то вам потрібно " "буде спочатку встановити Rust. Зробіть це, дотримуючись [інструкцій у The " "Rust Book](https://doc.rust-lang.org/book/ch01-01-installation.html). У " "вашій системі з'являться інструменти `rustc` та `cargo`. На момент написання " "статті останній стабільний випуск Rust має такі версії:" #: src\cargo/running-locally.md:15 msgid "" "You can use any later version too since Rust maintains backwards " "compatibility." msgstr "" "Ви також можете використовувати будь-яку пізнішу версію, оскільки Rust " "підтримує зворотну сумісність." #: src\cargo/running-locally.md:17 msgid "" "With this in place, follow these steps to build a Rust binary from one of " "the examples in this training:" msgstr "" "Після цього виконайте такі кроки, щоб зібрати виконуваний файл на основі " "одного з прикладів у цьому курсі:" #: src\cargo/running-locally.md:20 msgid "Click the \"Copy to clipboard\" button on the example you want to copy." msgstr "" "Натисніть кнопку \"Copy to clipboard\" на прикладі коду, який потрібно " "скопіювати." #: src\cargo/running-locally.md:22 msgid "" "Use `cargo new exercise` to create a new `exercise/` directory for your code:" msgstr "" "Використовуйте `cargo new exercise`, щоб створити нову директорію `exercise/" "` для вашого коду:" #: src\cargo/running-locally.md:29 msgid "" "Navigate into `exercise/` and use `cargo run` to build and run your binary:" msgstr "" "Перейдіть в директорію `exercise/` і виконайте `cargo run` для побудови та " "запуску виконуваного файлу:" #: src\cargo/running-locally.md:40 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" msgstr "" "Замініть шаблонний код у `src/main.rs` на свій код. Наприклад, " "використовуючи приклад коду з попередньої сторінки, зробіть `src/main.rs` " "схожим на" #: src\cargo/running-locally.md:49 msgid "Use `cargo run` to build and run your updated binary:" msgstr "" "Використовуйте `cargo run` для побудови та запуску оновленого виконуваного " "файлу:" #: src\cargo/running-locally.md:59 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/" "debug/` for a normal debug build. Use `cargo build --release` to produce an " "optimized release build in `target/release/`." msgstr "" "Використовуйте `cargo check` для швидкої перевірки проекту на наявність " "помилок і `cargo build` для компіляції проекту без його запуску. Ви " "знайдете результат у директорії `target/debug/` для налагоджувальної збірки. " "Використовуйте `cargo build --release` для створення оптимізованої фінальної " "збірки в `target/release/`." #: src\cargo/running-locally.md:64 msgid "" "You can add dependencies for your project by editing `Cargo.toml`. When you " "run `cargo` commands, it will automatically download and compile missing " "dependencies for you." msgstr "" "Ви можете додати залежності для вашого проекту, відредагувавши файл `Cargo." "toml`. Коли ви запустите команду `cargo`, вона автоматично завантажить і " "скомпілює відсутні залежності для вас." #: src\cargo/running-locally.md:72 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 " "development environment." msgstr "" "Запропонуйте учасникам заняття встановити Cargo та використовувати локальний " "редактор. Це полегшить їм життя, тому що у них буде відповідне середовище " "розробки." #: src\welcome-day-1.md:1 msgid "Welcome to Day 1" msgstr "Ласкаво просимо до Дня 1" #: src\welcome-day-1.md:3 msgid "" "This is the first day of Rust Fundamentals. We will cover a lot of ground " "today:" msgstr "" "Це перший день Rust Fundamentals. Сьогодні ми розглянемо багато питань:" #: src\welcome-day-1.md:6 msgid "" "Basic Rust syntax: variables, scalar and compound types, enums, structs, " "references, functions, and methods." msgstr "" "Базовий синтаксис Rust: змінні, скалярні та складені типи, переліки, " "структури, посилання, функції та методи." #: src\welcome-day-1.md:8 msgid "Types and type inference." msgstr "Типи та виведення типів." #: src\welcome-day-1.md:9 msgid "Control flow constructs: loops, conditionals, and so on." msgstr "Конструкції потоку управління: цикли, умовні переходи і так далі." #: src\welcome-day-1.md:10 msgid "User-defined types: structs and enums." msgstr "Типи, визначені користувачем: структури та переліки." #: src\welcome-day-1.md:11 msgid "Pattern matching: destructuring enums, structs, and arrays." msgstr "Зіставлення шаблонів: деструктуризація переліків, структур і масивів." #: src\welcome-day-1.md:13 src\welcome-day-2.md:12 src\welcome-day-3.md:8 #: src\welcome-day-4.md:11 msgid "Schedule" msgstr "Розклад" #: src\welcome-day-1.md:15 src\welcome-day-1-afternoon.md:3 #: src\welcome-day-2.md:14 src\welcome-day-2-afternoon.md:3 #: src\welcome-day-3.md:10 src\welcome-day-3-afternoon.md:3 #: src\welcome-day-4.md:13 src\welcome-day-4-afternoon.md:3 msgid "{{%session outline}}" msgstr "" #: src\welcome-day-1.md:19 msgid "Please remind the students that:" msgstr "Будь ласка, нагадайте учням, що:" #: src\welcome-day-1.md:21 msgid "" "They should ask questions when they get them, don't save them to the end." msgstr "" "Вони повинні задавати питання, коли вони їх мають, а не зберігати їх до " "кінця." #: src\welcome-day-1.md:22 msgid "" "The class is meant to be interactive and discussions are very much " "encouraged!" msgstr "Клас має на меті бути інтерактивним, тому дискусії дуже заохочуються!" #: src\welcome-day-1.md:23 msgid "" "As an instructor, you should try to keep the discussions relevant, i.e., " "keep the discussions related to how Rust does things vs some other language. " "It can be hard to find the right balance, but err on the side of allowing " "discussions since they engage people much more than one-way communication." msgstr "" "Як інструктор, ви повинні намагатися підтримувати обговорення актуальними, " "тобто підтримувати обговорення, пов’язані з тим, як Rust щось робить на " "відміну від іншої мови. Буває важко знайти правильний баланс, але краще " "дозволити дискусії, оскільки вони залучають людей набагато більше, ніж " "одностороннє спілкування." #: src\welcome-day-1.md:27 msgid "" "The questions will likely mean that we talk about things ahead of the slides." msgstr "" "Запитання, швидше за все, означатимуть, що ми обговорюємо речі, які " "випереджають слайди." #: src\welcome-day-1.md:28 msgid "" "This is perfectly okay! Repetition is an important part of learning. " "Remember that the slides are just a support and you are free to skip them as " "you like." msgstr "" "Це цілком нормально! Повторення є важливою частиною навчання. Пам’ятайте, що " "слайди є лише підтримкою, і ви можете пропускати їх, якщо забажаєте." #: src\welcome-day-1.md:32 msgid "" "The idea for the first day is to show the \"basic\" things in Rust that " "should have immediate parallels in other languages. The more advanced parts " "of Rust come on the subsequent days." msgstr "" "Ідея першого дня полягає в тому, щоб показати \"базові\" речі в Rust, які " "повинні мати безпосередні паралелі в інших мовах. Більш просунуті частини " "Rust будуть розглянуті в наступні дні." #: src\welcome-day-1.md:36 msgid "" "If you're teaching this in a classroom, this is a good place to go over the " "schedule. Note that there is an exercise at the end of each segment, " "followed by a break. Plan to cover the exercise solution after the break. " "The times listed here are a suggestion in order to keep the course on " "schedule. Feel free to be flexible and adjust as necessary!" msgstr "" "Якщо ви викладаєте цей курс у класі, це гарний момент, щоб ознайомитися з " "розкладом. Зверніть увагу, що в кінці кожного сегмента є вправа, після якої " "слідує перерва. Плануйте розглянути рішення вправи після перерви. Час, " "вказаний тут, є рекомендацією для того, щоб тримати курс за розкладом. Не " "соромтеся бути гнучкими і вносити корективи за потреби!" #: src\hello-world.md:3 src\types-and-values.md:3 src\control-flow-basics.md:3 #: src\tuples-and-arrays.md:3 src\references.md:3 src\user-defined-types.md:3 #: src\pattern-matching.md:3 src\methods-and-traits.md:3 src\generics.md:3 #: src\std-types.md:3 src\std-traits.md:3 src\memory-management.md:3 #: src\smart-pointers.md:3 src\borrowing.md:3 src\slices-and-lifetimes.md:3 #: src\iterators.md:3 src\modules.md:3 src\testing.md:3 src\error-handling.md:3 #: src\unsafe-rust.md:3 msgid "{{%segment outline}}" msgstr "" #: src\hello-world/what-is-rust.md:3 msgid "" "Rust is a new programming language which had its [1.0 release in 2015]" "(https://blog.rust-lang.org/2015/05/15/Rust-1.0.html):" msgstr "" "Rust — це нова мова програмування, яка мала [1.0 випуск у 2015 році](https://" "blog.rust-lang.org/2015/05/15/Rust-1.0.html):" #: src\hello-world/what-is-rust.md:5 msgid "Rust is a statically compiled language in a similar role as C++" msgstr "" "Rust — це статично скомпільована мова, яка виконує таку саму роль, як C++" #: src\hello-world/what-is-rust.md:6 msgid "`rustc` uses LLVM as its backend." msgstr "`rustc` використовує LLVM як бекенд." #: src\hello-world/what-is-rust.md:7 msgid "" "Rust supports many [platforms and architectures](https://doc.rust-lang.org/" "nightly/rustc/platform-support.html):" msgstr "" "Rust підтримує багато [платформ і архітектур](https://doc.rust-lang.org/" "nightly/rustc/platform-support.html):" #: src\hello-world/what-is-rust.md:9 msgid "x86, ARM, WebAssembly, ..." msgstr "x86, ARM, WebAssembly, ..." #: src\hello-world/what-is-rust.md:10 msgid "Linux, Mac, Windows, ..." msgstr "Linux, Mac, Windows, ..." #: src\hello-world/what-is-rust.md:11 msgid "Rust is used for a wide range of devices:" msgstr "Rust використовується для широкого спектру пристроїв:" #: src\hello-world/what-is-rust.md:12 msgid "firmware and boot loaders," msgstr "прошивки та завантажувачі," #: src\hello-world/what-is-rust.md:13 msgid "smart displays," msgstr "розумні дисплеї," #: src\hello-world/what-is-rust.md:14 msgid "mobile phones," msgstr "мобільні телефони," #: src\hello-world/what-is-rust.md:15 msgid "desktops," msgstr "робочі станції," #: src\hello-world/what-is-rust.md:16 msgid "servers." msgstr "сервери." #: src\hello-world/what-is-rust.md:21 msgid "Rust fits in the same area as C++:" msgstr "Rust вписується в ту ж саму область, що й C++:" #: src\hello-world/what-is-rust.md:23 msgid "High flexibility." msgstr "Висока гнучкість." #: src\hello-world/what-is-rust.md:24 msgid "High level of control." msgstr "Високий рівень контролю." #: src\hello-world/what-is-rust.md:25 msgid "" "Can be scaled down to very constrained devices such as microcontrollers." msgstr "" "Може бути зменьшений до дуже обмежених пристроїв, таких як мікроконтролери." #: src\hello-world/what-is-rust.md:26 msgid "Has no runtime or garbage collection." msgstr "Не має часу виконання або збирання сміття." #: src\hello-world/what-is-rust.md:27 msgid "Focuses on reliability and safety without sacrificing performance." msgstr "Зосереджений на надійності та безпеці без шкоди для продуктивності." #: src\hello-world/hello-world.md:3 msgid "" "Let us jump into the simplest possible Rust program, a classic Hello World " "program:" msgstr "" "Перейдемо до найпростішої програми Rust, класичної програми Hello World:" #: src\hello-world/hello-world.md:8 msgid "\"Hello 🌍!\"" msgstr "\"Привіт 🌍!\"" #: src\hello-world/hello-world.md:12 msgid "What you see:" msgstr "Що ви бачите:" #: src\hello-world/hello-world.md:14 msgid "Functions are introduced with `fn`." msgstr "Функції вводяться за допомогою `fn`." #: src\hello-world/hello-world.md:15 msgid "Blocks are delimited by curly braces like in C and C++." msgstr "Блоки розділені фігурними дужками, як у C і C++." #: src\hello-world/hello-world.md:16 msgid "The `main` function is the entry point of the program." msgstr "Функція `main` є точкою входу в програму." #: src\hello-world/hello-world.md:17 msgid "Rust has hygienic macros, `println!` is an example of this." msgstr "Rust має гігієнічні макроси, `println!` є прикладом цього." #: src\hello-world/hello-world.md:18 msgid "Rust strings are UTF-8 encoded and can contain any Unicode character." msgstr "" "Рядки в Rust мають кодування UTF-8 і можуть містити будь-які символи Unicode." #: src\hello-world/hello-world.md:22 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 " "familiar." msgstr "" "Цей слайд спрямований на те, щоб студенти звикли працювати з кодом Rust. " "Вони побачать масу цього протягом наступних чотирьох днів, тож ми починаємо " "з чогось малого та знайомого." #: src\hello-world/hello-world.md:27 msgid "" "Rust is very much like other languages in the C/C++/Java tradition. It is " "imperative and it doesn't try to reinvent things unless absolutely necessary." msgstr "" "Rust дуже схожий на інші традиціїні мови як C/C++/Java. Це навмисно, і він " "не намагається винайти щось заново, якщо це не є абсолютно необхідним." #: src\hello-world/hello-world.md:31 msgid "Rust is modern with full support for things like Unicode." msgstr "Rust сучасний із повною підтримкою таких речей, як Unicode." #: src\hello-world/hello-world.md:33 msgid "" "Rust uses macros for situations where you want to have a variable number of " "arguments (no function [overloading](basic-syntax/functions-interlude.md))." msgstr "" "Rust використовує макроси для ситуацій, коли потрібно мати змінну кількість " "аргументів (немає [перевантаження](basic-syntax/functions-interlude.md) " "функцій)." #: src\hello-world/hello-world.md:36 msgid "" "Macros being 'hygienic' means they don't accidentally capture identifiers " "from the scope they are used in. Rust macros are actually only [partially " "hygienic](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene." "html)." msgstr "" "Макроси є «гігієнічними» що означає, що вони випадково не захоплюють " "ідентифікатори з області, у якій вони використовуються. Макроси Rust " "насправді лише [частково гігієнічні](https://veykril.github.io/tlborm/decl-" "macros/minutiae/hygiene .html)." #: src\hello-world/hello-world.md:40 msgid "" "Rust is multi-paradigm. For example, it has powerful [object-oriented " "programming features](https://doc.rust-lang.org/book/ch17-00-oop.html), and, " "while it is not a functional language, it includes a range of [functional " "concepts](https://doc.rust-lang.org/book/ch13-00-functional-features.html)." msgstr "" "Rust є мультипарадигмою. Наприклад, він має потужні [функції об’єктно-" "орієнтованого програмування](https://doc.rust-lang.org/book/ch17-00-oop." "html), і, хоча це не функціональна мова, він включає діапазон " "[функціональних понять](https://doc.rust-lang.org/book/ch13-00-functional-" "features.html)." #: src\hello-world/benefits.md:3 msgid "Some unique selling points of Rust:" msgstr "Деякі унікальні переваги Rust:" #: src\hello-world/benefits.md:5 msgid "" "_Compile time memory safety_ - whole classes of memory bugs are prevented at " "compile time" msgstr "" "_Безпека пам'яті під час компіляції_ - цілі класи помилок пам'яті " "запобігаються на етапі компіляції" #: src\hello-world/benefits.md:6 msgid "No uninitialized variables." msgstr "Немає неініціалізованих змінних." #: src\hello-world/benefits.md:7 msgid "No double-frees." msgstr "Ніяких подвійних звільнень." #: src\hello-world/benefits.md:8 msgid "No use-after-free." msgstr "Немає використання після звільнення." #: src\hello-world/benefits.md:9 msgid "No `NULL` pointers." msgstr "Немає вказівників `NULL`." #: src\hello-world/benefits.md:10 msgid "No forgotten locked mutexes." msgstr "Немає забутих заблокованих м'ютексів." #: src\hello-world/benefits.md:11 msgid "No data races between threads." msgstr "Немає перегонів даних між потоками." #: src\hello-world/benefits.md:12 msgid "No iterator invalidation." msgstr "Немає недійсності ітератора." #: src\hello-world/benefits.md:14 msgid "" "_No undefined runtime behavior_ - what a Rust statement does is never left " "unspecified" msgstr "" "_Ніякої невизначеної поведінки під час виконання_ - те, що робить оператор " "Rust, ніколи не залишається невизначеним" #: src\hello-world/benefits.md:16 msgid "Array access is bounds checked." msgstr "Доступ до масиву перевірено на межі." #: src\hello-world/benefits.md:17 msgid "Integer overflow is defined (panic or wrap-around)." msgstr "" "Поведінка цілочисельного переповнення визначена (паніка або обертання)." #: src\hello-world/benefits.md:19 msgid "" "_Modern language features_ - as expressive and ergonomic as higher-level " "languages" msgstr "" "_Можливості сучасної мови_ - така ж виразна та ергономічна, як і мови вищих " "рівнів" #: src\hello-world/benefits.md:21 msgid "Enums and pattern matching." msgstr "Переліки та зіставлення шаблонів." #: src\hello-world/benefits.md:22 msgid "Generics." msgstr "Узагальнені типи." #: src\hello-world/benefits.md:23 msgid "No overhead FFI." msgstr "FFI без накладних витрат." #: src\hello-world/benefits.md:24 msgid "Zero-cost abstractions." msgstr "Абстракції без витрат." #: src\hello-world/benefits.md:25 msgid "Great compiler errors." msgstr "Чудово деталізовані помилки компілятора." #: src\hello-world/benefits.md:26 msgid "Built-in dependency manager." msgstr "Вбудований менеджер залежностей." #: src\hello-world/benefits.md:27 msgid "Built-in support for testing." msgstr "Вбудована підтримка тестування." #: src\hello-world/benefits.md:28 msgid "Excellent Language Server Protocol support." msgstr "Чудова підтримка протоколу мовного сервера (LSP)." #: src\hello-world/benefits.md:32 msgid "" "Do not spend much time here. All of these points will be covered in more " "depth later." msgstr "" "Не витрачайте тут багато часу. Всі ці пункти будуть розглянуті більш " "детально пізніше." #: src\hello-world/benefits.md:35 msgid "" "Make sure to ask the class which languages they have experience with. " "Depending on the answer you can highlight different features of Rust:" msgstr "" "Обов’язково запитайте клас, з якими мовами вони мають досвід. Залежно від " "відповіді ви можете виділити різні особливості Rust:" #: src\hello-world/benefits.md:38 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 " "have the memory unsafety issues. In addition, you get a modern language with " "constructs like pattern matching and built-in dependency management." msgstr "" "Досвід роботи з C або C++: Rust усуває цілий клас _помилок виконання_ за " "допомогою засобу перевірки запозичень. Ви отримуєте продуктивність, як у C і " "C++, але у вас немає проблем із небезпекою пам’яті. Крім того, ви отримуєте " "сучасну мову з такими конструкціями, як зіставлення шаблонів і вбудоване " "керування залежностями." #: src\hello-world/benefits.md:43 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 " "addition you get fast and predictable performance like C and C++ (no garbage " "collector) as well as access to low-level hardware (should you need it)" msgstr "" "Досвід роботи з Java, Go, Python, JavaScript...: Ви отримуєте таку саму " "безпеку пам’яті, що й у цих мовах, а також подібне відчуття мови високого " "рівня. Крім того, ви отримуєте швидку та передбачувану продуктивність як C і " "C++ (без збиральника сміття), а також доступ низького рівня до апаратного " "забезпечення (якщо воно вам знадобиться)" #: src\hello-world/playground.md:3 msgid "" "The [Rust Playground](https://play.rust-lang.org/) provides an easy way to " "run short Rust programs, and is the basis for the examples and exercises in " "this course. Try running the \"hello-world\" program it starts with. It " "comes with a few handy features:" msgstr "" "[Rust Playground](https://play.rust-lang.org/) надає простий спосіб " "виконання коротких Rust-програм і є основою для прикладів і вправ у цьому " "курсі. Спробуйте запустити програму \"hello-world\", з якої він " "починається. Вона має декілька зручних можливостей:" #: src\hello-world/playground.md:8 msgid "" "Under \"Tools\", use the `rustfmt` option to format your code in the " "\"standard\" way." msgstr "" "У розділі \"Інструменти\" скористайтеся опцією `rustfmt` для форматування " "вашого коду у \"стандартний\" спосіб." #: src\hello-world/playground.md:11 msgid "" "Rust has two main \"profiles\" for generating code: Debug (extra runtime " "checks, less optimization) and Release (fewer runtime checks, lots of " "optimization). These are accessible under \"Debug\" at the top." msgstr "" "Rust має два основних \"профілі\" для генерації коду: Налагодження " "(додаткові перевірки під час виконання, менше оптимізації) та Випуску (менше " "перевірок під час виконання, багато оптимізацій). Вони доступні у розділі " "\"Налагодження\" у верхній частині вікна." #: src\hello-world/playground.md:15 msgid "" "If you're interested, use \"ASM\" under \"...\" to see the generated " "assembly code." msgstr "" "Якщо вам цікаво, скористайтеся командою \"ASM\" в \"...\", щоб переглянути " "згенерований асемблерний код." #: src\hello-world/playground.md:20 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 " "out during the rest of the course. This is particularly helpful for advanced " "students who want to know more about Rust's optimzations or generated " "assembly." msgstr "" "Коли студенти підуть на перерву, заохотьте їх відкрити майданчик і трохи " "поекспериментувати. Заохочуйте їх залишати вкладку відкритою і пробувати " "щось протягом решти курсу. Це особливо корисно для досвідчених студентів, " "які хочуть дізнатися більше про оптимізацію Rust або згенеровану збірку." #: src\types-and-values/variables.md:3 msgid "" "Rust provides type safety via static typing. Variable bindings are made with " "`let`:" msgstr "" "Rust забезпечує безпеку типів за допомогою статичної типізації. Прив'язки " "змінних створюються за допомогою `let`:" #: src\types-and-values/variables.md:9 src\control-flow-basics/loops.md:29 #: src\control-flow-basics/break-continue.md:33 #: src\control-flow-basics/blocks-and-scopes.md:17 msgid "\"x: {x}\"" msgstr "\"x: {x}\"" #: src\types-and-values/variables.md:10 msgid "" "// x = 20;\n" " // println!(\"x: {x}\");\n" msgstr "" "// x = 20;\n" " // println!(\"x: {x}\");\n" #: src\types-and-values/variables.md:17 msgid "" "Uncomment the `x = 20` to demonstrate that variables are immutable by " "default. Add the `mut` keyword to allow changes." msgstr "" "Відкоментуйте `x = 20`, щоб продемонструвати, що змінні за замовчуванням є " "незмінними. Додайте ключове слово `mut`, щоб дозволити зміну." #: src\types-and-values/variables.md:20 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 " "many cases." msgstr "" "Тут `i32` - це тип змінної. Він має бути відомий під час компіляції, але " "виведення типів (розглядається пізніше) дозволяє програмісту у багатьох " "випадках не вказувати його." #: src\types-and-values/values.md:3 msgid "" "Here are some basic built-in types, and the syntax for literal values of " "each type." msgstr "" "Нижче наведено деякі основні вбудовані типи та синтаксис для літеральних " "значень кожного типу." #: src\types-and-values/values.md:5 #: src\tuples-and-arrays/tuples-and-arrays.md:7 src\unsafe-rust/exercise.md:16 msgid "Types" msgstr "Типи" #: src\types-and-values/values.md:5 #: src\tuples-and-arrays/tuples-and-arrays.md:7 msgid "Literals" msgstr "Літерали" #: src\types-and-values/values.md:7 msgid "Signed integers" msgstr "Цілі числа зі знаком" #: src\types-and-values/values.md:7 msgid "`i8`, `i16`, `i32`, `i64`, `i128`, `isize`" msgstr "`i8`, `i16`, `i32`, `i64`, `i128`, `isize`" #: src\types-and-values/values.md:7 msgid "`-10`, `0`, `1_000`, `123_i64`" msgstr "`-10`, `0`, `1_000`, `123_i64`" #: src\types-and-values/values.md:8 msgid "Unsigned integers" msgstr "Беззнакові цілі числа" #: src\types-and-values/values.md:8 msgid "`u8`, `u16`, `u32`, `u64`, `u128`, `usize`" msgstr "`u8`, `u16`, `u32`, `u64`, `u128`, `usize`" #: src\types-and-values/values.md:8 msgid "`0`, `123`, `10_u16`" msgstr "`0`, `123`, `10_u16`" #: src\types-and-values/values.md:9 msgid "Floating point numbers" msgstr "Числа з плаваючою комою" #: src\types-and-values/values.md:9 msgid "`f32`, `f64`" msgstr "`f32`, `f64`" #: src\types-and-values/values.md:9 msgid "`3.14`, `-10.0e20`, `2_f32`" msgstr "`3.14`, `-10.0e20`, `2_f32`" #: src\types-and-values/values.md:10 msgid "Unicode scalar values" msgstr "Скалярні значення Unicode" #: src\types-and-values/values.md:10 msgid "`char`" msgstr "`char`" #: src\types-and-values/values.md:10 msgid "`'a'`, `'α'`, `'∞'`" msgstr "`'a'`, `'α'`, `'∞'`" #: src\types-and-values/values.md:11 msgid "Booleans" msgstr "Логічні значення" #: src\types-and-values/values.md:11 msgid "`bool`" msgstr "`bool`" #: src\types-and-values/values.md:11 msgid "`true`, `false`" msgstr "`true`, `false`" #: src\types-and-values/values.md:13 msgid "The types have widths as follows:" msgstr "Типи мають наступну ширину:" #: src\types-and-values/values.md:15 msgid "`iN`, `uN`, and `fN` are _N_ bits wide," msgstr "`iN`, `uN` і `fN` мають ширину _N_ біт," #: src\types-and-values/values.md:16 msgid "`isize` and `usize` are the width of a pointer," msgstr "`isize` і `usize` – це ширина вказівника," #: src\types-and-values/values.md:17 msgid "`char` is 32 bits wide," msgstr "`char` має ширину 32 біти," #: src\types-and-values/values.md:18 msgid "`bool` is 8 bits wide." msgstr "`bool` має ширину 8 біт." #: src\types-and-values/values.md:22 msgid "There are a few syntaxes which are not shown above:" msgstr "Є кілька синтаксисів, які не показано вище:" #: src\types-and-values/values.md:24 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 " "as `123i64`." msgstr "" "Усі підкреслення у числах можна опускати, вони призначені лише для " "розбірливості. Отже, `1_000` можна записати як `1000` (або `10_00`), а " "`123_i64` можна записати як `123i64`." #: src\types-and-values/arithmetic.md:9 msgid "\"result: {}\"" msgstr "\"результат: {}\"" #: src\types-and-values/arithmetic.md:15 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. " "Functions will be covered in more detail later." msgstr "" "Це перший раз, коли ми бачимо функцію, відмінну від `main`, але її значення " "повинно бути зрозумілим: вона отримує три цілих числа і повертає ціле число. " "Функції буде розглянуто більш детально пізніше." #: src\types-and-values/arithmetic.md:19 msgid "Arithmetic is very similar to other languages, with similar precedence." msgstr "Арифметика дуже схожа на інші мови, зі схожими пріоритетами." #: src\types-and-values/arithmetic.md:21 msgid "" "What about integer overflow? In C and C++ overflow of _signed_ integers is " "actually undefined, and might do different things on different platforms or " "compilers. In Rust, it's defined." msgstr "" "Як бути з переповненням цілих чисел? У мовах C та C++ переповнення цілих " "чисел _зі знаком_ фактично не визначено, і на різних платформах та " "компіляторах воно може поводитися по-різному. У Rust воно визначене." #: src\types-and-values/arithmetic.md:25 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 " "options, such as overflowing, saturating, and carrying. These are accessed " "with method syntax, e.g., `(a * b).saturating_add(b * c).saturating_add(c * " "a)`." msgstr "" "Замініть `i32` на `i16`, щоб побачити цілочисельне переповнення, яке панікує " "(перевіряється) у налагоджувальній збірці і загортається у релізній збірці. " "Існують і інші варіанти, такі як переповнення, перенасичення і перенесення. " "Доступ до них здійснюється за допомогою синтаксису методу, наприклад, `(a * " "b).saturating_add(b * c).saturating_add(c * a)`." #: src\types-and-values/arithmetic.md:30 msgid "" "In fact, the compiler will detect overflow of constant expressions, which is " "why the example requires a separate function." msgstr "" "Насправді, компілятор виявить переповнення константних виразів, тому приклад " "вимагає окремої функції." #: src\types-and-values/strings.md:3 msgid "" "Rust has two types to represent strings, both of which will be covered in " "more depth later. Both _always_ store UTF-8 encoded strings." msgstr "" "Rust має два типи для представлення рядків, обидва з яких будуть розглянуті " "більш детально пізніше. Обидва типи _завжди_ зберігають рядки у кодуванні " "UTF-8." #: src\types-and-values/strings.md:6 msgid "`String` - a modifiable, owned string." msgstr "`String` - змінюваний рядок, що належить власнику." #: src\types-and-values/strings.md:7 msgid "`&str` - a read-only string. String literals have this type." msgstr "" "`&str` - рядок, доступний тільки для читання. Цей тип мають рядкові літерали." #: src\types-and-values/strings.md:11 msgid "\"Greetings\"" msgstr "\"Привітання\"" #: src\types-and-values/strings.md:12 msgid "\"🪐\"" msgstr "\"🪐\"" #: src\types-and-values/strings.md:15 msgid "\", \"" msgstr "\", \"" #: src\types-and-values/strings.md:17 msgid "\"final sentence: {}\"" msgstr "\"останнє речення: {}\"" #: src\types-and-values/strings.md:18 src\async/control-flow/join.md:30 msgid "\"{:?}\"" msgstr "\"{:?}\"" #: src\types-and-values/strings.md:19 msgid "//println!(\"{:?}\", &sentence[12..13]);\n" msgstr "//println!(\"{:?}\", &sentence[12..13]);\n" #: src\types-and-values/strings.md:25 msgid "" "This slide introduces strings. Everything here will be covered in more depth " "later, but this is enough for subsequent slides and exercises to use strings." msgstr "" "Цей слайд знайомить зі рядками. Пізніше ми розглянемо все більш детально, " "але цього достатньо для наступних слайдів і вправ з використанням рядків." #: src\types-and-values/strings.md:28 msgid "Invalid UTF-8 in a string is UB, and this not allowed in safe Rust." msgstr "" "Неправильний UTF-8 у рядку є невизначена поведінка, а це заборонено у " "безпечному Rust." #: src\types-and-values/strings.md:30 msgid "" "`String` is a user-defined type with a constructor (`::new()`) and methods " "like `s.push_str(..)`." msgstr "" "`String` - це визначений користувачем тип з конструктором (`::new()`) і " "методами на зразок `s.push_str(..)`." #: src\types-and-values/strings.md:32 msgid "" "The `&` in `&str` indicates that this is a reference. We will cover " "references later, so for now just think of `&str` as a unit meaning \"a read-" "only string\"." msgstr "" "Символ `&` в `&str` вказує на те, що це посилання. Ми розглянемо посилання " "пізніше, а поки що вважайте `&str` одиницею, яка означає \"рядок лише для " "читання\"." #: src\types-and-values/strings.md:35 msgid "" "The commented-out line is indexing into the string by byte position. " "`12..13` does not end on a character boundary, so the program panics. Adjust " "it to a range that does, based on the error message." msgstr "" "Закоментований рядок індексується у рядку за позицією байта. `12..13` не " "закінчується на межі символів, тому програма панікує. Налаштуйте її на " "діапазон, який відповідає цій межі, виходячи з повідомлення про помилку." #: src\types-and-values/strings.md:39 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 `#` on either side of the quotes:" msgstr "" "Необроблені рядки дозволяють створювати значення `&str` з відключеним " "екрануванням: `r\"\\n\" == \"\\\\n\"`. Ви можете вставити подвійні лапки, " "використовуючи однакову кількість `#` з обох боків лапок:" #: src\types-and-values/inference.md:3 msgid "Rust will look at how the variable is _used_ to determine the type:" msgstr "Rust перевірить, як _використовується_ змінна для визначення типу:" #: src\types-and-values/inference.md:27 msgid "" "This slide demonstrates how the Rust compiler infers types based on " "constraints given by variable declarations and usages." msgstr "" "На цьому слайді показано, як компілятор Rust виводить типи на основі " "обмежень, заданих оголошеннями змінних та їх використанням." #: src\types-and-values/inference.md:29 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 " "code generated by such declaration is identical to the explicit declaration " "of a type. The compiler does the job for us and helps us write more concise " "code." msgstr "" "Дуже важливо підкреслити, що змінні, оголошені таким чином, не належать до " "якогось динамічного «будь-якого типу», який може містити будь-які дані. " "Машинний код, згенерований такою декларацією, ідентичний явному оголошенню " "типу. Компілятор виконує роботу за нас і допомагає нам писати більш стислий " "код." #: src\types-and-values/inference.md:33 msgid "" "When nothing constrains the type of an integer literal, Rust defaults to " "`i32`. This sometimes appears as `{integer}` in error messages. Similarly, " "floating-point literals default to `f64`." msgstr "" "Якщо тип цілочисельного літерала не обмежено, Rust за замовчуванням " "використовує тип `i32`. Іноді у повідомленнях про помилки це позначається як " "`{integer}`. Подібно до цього, літерали з плаваючою комою за замовчуванням " "мають тип `f64`." #: src\types-and-values/inference.md:42 msgid "// ERROR: no implementation for `{float} == {integer}`\n" msgstr "// ERROR: no implementation for `{float} == {integer}`\n" #: src\types-and-values/exercise.md:3 msgid "" "The first and second Fibonacci numbers are both `1`. For n>2, he n'th " "Fibonacci number is calculated recursively as the sum of the n-1'th and " "n-2'th Fibonacci numbers." msgstr "" "Перше і друге число Фібоначчі рівні `1`. Для n>2 n-те число Фібоначчі " "обчислюється рекурсивно як сума n-1-го та n-2-го чисел Фібоначчі." #: src\types-and-values/exercise.md:7 msgid "" "Write a function `fib(n)` that calculates the n'th Fibonacci number. When " "will this function panic?" msgstr "" "Напишіть функцію `fib(n)`, яка обчислює n-те число Фібоначчі. Коли ця " "функція запанікує?" #: src\types-and-values/exercise.md:13 msgid "// The base case.\n" msgstr "// Базовий випадок.\n" #: src\types-and-values/exercise.md:14 src\types-and-values/exercise.md:17 #: src\control-flow-basics/exercise.md:26 #: src\control-flow-basics/exercise.md:30 msgid "\"Implement this\"" msgstr "\"Реалізуйте це\"" #: src\types-and-values/exercise.md:16 msgid "// The recursive case.\n" msgstr "// Рекурсивний випадок.\n" #: src\types-and-values/exercise.md:23 src\types-and-values/solution.md:14 msgid "\"fib(n) = {}\"" msgstr "\"fib(n) = {}\"" #: src\control-flow-basics/conditionals.md:3 msgid "Much of the Rust syntax will be familiar to you from C, C++ or Java:" msgstr "Значна частина синтаксису Rust буде вам знайома з C, C++ або Java:" #: src\control-flow-basics/conditionals.md:5 msgid "Blocks are delimited by curly braces." msgstr "Блоки розділені фігурними дужками." #: src\control-flow-basics/conditionals.md:6 msgid "" "Line comments are started with `//`, block comments are delimited by `/* ... " "*/`." msgstr "" "Коментарі до рядків починаються з `//`, блокові коментарі розмежовуються за " "допомогою `/* ... */`." #: src\control-flow-basics/conditionals.md:8 msgid "Keywords like `if` and `while` work the same." msgstr "Такі ключові слова, як `if` та `while` працюють також само." #: src\control-flow-basics/conditionals.md:9 msgid "Variable assignment is done with `=`, comparison is done with `==`." msgstr "" "Присвоєння змінної виконується за допомогою `=`, порівняння — за допомогою " "`==`." #: src\control-flow-basics/conditionals.md:11 msgid "`if` expressions" msgstr "Вирази `if`" #: src\control-flow-basics/conditionals.md:13 msgid "" "You use [`if` expressions](https://doc.rust-lang.org/reference/expressions/" "if-expr.html#if-expressions) exactly like `if` statements in other languages:" msgstr "" "Ви використовуєте вирази [`if`](https://doc.rust-lang.org/reference/" "expressions/if-expr.html#if-expressions) так само, як і вирази `if` в інших " "мовах:" #: src\control-flow-basics/conditionals.md:21 #: src\control-flow-basics/conditionals.md:38 msgid "\"small\"" msgstr "\"маленький\"" #: src\control-flow-basics/conditionals.md:23 msgid "\"biggish\"" msgstr "\"великий\"" #: src\control-flow-basics/conditionals.md:25 msgid "\"huge\"" msgstr "\"величезний\"" #: src\control-flow-basics/conditionals.md:30 msgid "" "In addition, you can use `if` as an expression. The last expression of each " "block becomes the value of the `if` expression:" msgstr "" "Крім того, ви можете використовувати `if` як вираз. Останній вираз кожного " "блоку стає значенням виразу `if`:" #: src\control-flow-basics/conditionals.md:40 msgid "\"large\"" msgstr "\"великий\"" #: src\control-flow-basics/conditionals.md:42 msgid "\"number size: {}\"" msgstr "\"розмір числа: {}\"" #: src\control-flow-basics/conditionals.md:48 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 `;` " "after `\"small\"` in the second example." msgstr "" "Оскільки `if` є виразом і повинен мати певний тип, обидва його блоки " "розгалужень повинні мати той самий тип. Покажіть, що станеться, якщо додати " "`;` після `\"маленький\"` у другому прикладі." #: src\control-flow-basics/conditionals.md:50 msgid "" "When `if` is used in an expression, the expression must have a `;` to " "separate it from the next statement. Remove the `;` before `println!` to see " "the compiler error." msgstr "" "Коли у виразі використовується `if`, вираз повинен мати `;`, щоб відокремити " "його від наступного оператора. Видаліть `;` перед `println!`, щоб побачити " "помилку компілятора." #: src\control-flow-basics/loops.md:3 msgid "There are three looping keywords in Rust: `while`, `loop`, and `for`:" msgstr "У Rust є три ключові слова циклу: `while`, `loop` і `for`:" #: src\control-flow-basics/loops.md:5 msgid "`while`" msgstr "`while`" #: src\control-flow-basics/loops.md:7 msgid "" "The [`while` keyword](https://doc.rust-lang.org/reference/expressions/loop-" "expr.html#predicate-loops) works much like in other languages, executing the " "loop body as long as the condition is true." msgstr "" "Ключове слово [`while`](https://doc.rust-lang.org/reference/expressions/loop-" "expr.html#predicate-loops) працює так само, як і в інших мовах, виконуючи " "тіло циклу доти, доки умова виконується." #: src\control-flow-basics/loops.md:17 msgid "\"Final x: {x}\"" msgstr "\"Final x: {x}\"" #: src\control-flow-basics/loops.md:21 msgid "`for`" msgstr "`for`" #: src\control-flow-basics/loops.md:23 msgid "" "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) iterates " "over ranges of values:" msgstr "" "Цикл [`for`](https://doc.rust-lang.org/std/keyword.for.html) виконує " "ітерації над діапазонами значень:" #: src\control-flow-basics/loops.md:34 msgid "`loop`" msgstr "`loop`" #: src\control-flow-basics/loops.md:36 msgid "" "The [`loop` statement](https://doc.rust-lang.org/std/keyword.loop.html) just " "loops forever, until a `break`." msgstr "" "Оператор [`loop`](https://doc.rust-lang.org/std/keyword.loop.html) просто " "повторюється до нескінченності, поки не трапиться `break`." #: src\control-flow-basics/loops.md:44 msgid "\"{i}\"" msgstr "\"{i}\"" #: src\control-flow-basics/loops.md:54 msgid "" "We will discuss iteration later; for now, just stick to range expressions." msgstr "" "Ми обговоримо ітерації пізніше, а поки що просто використовуйте діапазонні " "вирази." #: src\control-flow-basics/loops.md:55 msgid "" "Note that the `for` loop only iterates to `4`. Show the `1..=5` syntax for " "an inclusive range." msgstr "" "Зверніть увагу, що цикл `for` виконує ітерацію тільки до `4`. Покажіть " "синтаксис `1..=5` для включеного діапазону." #: src\control-flow-basics/break-continue.md:3 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). For " "`loop`, this can take an optional expression that becomes the value of the " "`loop` expression." msgstr "" "Якщо ви хочете достроково вийти з будь-якого типу циклу, використовуйте " "[`break`](https://doc.rust-lang.org/reference/expressions/loop-expr." "html#break-expressions). Для `loop` це може бути необов'язковий вираз, який " "стане значенням виразу `loop`." #: src\control-flow-basics/break-continue.md:7 msgid "" "If you want to immediately start the next iteration use [`continue`](https://" "doc.rust-lang.org/reference/expressions/loop-expr.html#continue-expressions)." msgstr "" "Якщо ви хочете негайно почати наступну ітерацію, використовуйте [`continue`]" "(https://doc.rust-lang.org/reference/expressions/loop-expr.html#continue-" "expressions)." #: src\control-flow-basics/break-continue.md:23 msgid "\"{result}\"" msgstr "\"{result}\"" #: src\control-flow-basics/break-continue.md:27 msgid "" "Both `continue` and `break` can optionally take a label argument which is " "used to break out of nested loops:" msgstr "" "І `continue`, і `break` можуть додатково приймати аргумент мітки, який " "використовується для виходу з вкладених циклів:" #: src\control-flow-basics/break-continue.md:36 msgid "\"x: {x}, i: {i}\"" msgstr "\"x: {x}, i: {i}\"" #: src\control-flow-basics/break-continue.md:46 msgid "" "In this case we break the outer loop after 3 iterations of the inner loop." msgstr "" "У цьому випадку ми розриваємо зовнішній цикл після 3 ітерацій внутрішнього " "циклу." #: src\control-flow-basics/break-continue.md:50 msgid "" "Note that `loop` is the only looping construct which returns a non-trivial " "value. This is because it's guaranteed to be entered at least once (unlike " "`while` and `for` loops)." msgstr "" "Зауважте, що `loop` — це єдина конструкція циклу, яка повертає нетривіальне " "значення. Це тому, що він гарантовано буде введений принаймні один раз (на " "відміну від циклів `while` та `for`)." #: src\control-flow-basics/blocks-and-scopes.md:3 msgid "Blocks" msgstr "Блоки" #: src\control-flow-basics/blocks-and-scopes.md:5 msgid "" "A block in Rust contains a sequence of expressions. Each block has a value " "and a type, which are those of the last expression of the block:" msgstr "" "Блок у Rust містить послідовність виразів. Кожен блок має значення та тип, " "які відповідають останньому виразу блоку:" #: src\control-flow-basics/blocks-and-scopes.md:14 msgid "\"y: {y}\"" msgstr "\"y: {y}\"" #: src\control-flow-basics/blocks-and-scopes.md:21 msgid "" "If the last expression ends with `;`, then the resulting value and type is " "`()`." msgstr "" "Якщо останній вираз закінчується символом `;`, то результуюче значення і тип " "буде `()`." #: src\control-flow-basics/blocks-and-scopes.md:23 msgid "Scopes and Shadowing" msgstr "Області видимості та затінення" #: src\control-flow-basics/blocks-and-scopes.md:25 msgid "A variable's scope is limited to the enclosing block." msgstr "Область видимості змінної обмежується блоком, що її охоплює." #: src\control-flow-basics/blocks-and-scopes.md:27 msgid "" "You can shadow variables, both those from outer scopes and variables from " "the same scope:" msgstr "" "Ви можете затіняти змінні, як із зовнішніх областей, так і змінні з тієї ж " "області:" #: src\control-flow-basics/blocks-and-scopes.md:33 msgid "\"before: {a}\"" msgstr "\"до: {a}\"" #: src\control-flow-basics/blocks-and-scopes.md:35 #: src\std-traits/from-and-into.md:7 src\std-traits/from-and-into.md:19 #: src\slices-and-lifetimes/solution.md:228 msgid "\"hello\"" msgstr "\"привіт\"" #: src\control-flow-basics/blocks-and-scopes.md:36 msgid "\"inner scope: {a}\"" msgstr "\"внутрішня область видимості: {a}\"" #: src\control-flow-basics/blocks-and-scopes.md:39 msgid "\"shadowed in inner scope: {a}\"" msgstr "\"затінений у внутрішній області видимості: {a}\"" #: src\control-flow-basics/blocks-and-scopes.md:42 msgid "\"after: {a}\"" msgstr "\"після: {a}\"" #: src\control-flow-basics/blocks-and-scopes.md:48 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`." msgstr "" "Ви можете показати, як змінюється значення блоку, змінивши останній рядок у " "блоці. Наприклад, додаванням/видаленням крапки з комою або використанням " "`return`." #: src\control-flow-basics/blocks-and-scopes.md:49 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." msgstr "" "Покажіть, що область видимості змінної обмежена, додавши `b` у внутрішньому " "блоці в останньому прикладі, а потім спробувавши отримати доступ до неї за " "межами цього блоку." #: src\control-flow-basics/blocks-and-scopes.md:50 msgid "" "Shadowing is different from mutation, because after shadowing both " "variable's memory locations exist at the same time. Both are available under " "the same name, depending where you use it in the code." msgstr "" "Затінення відрізняється від мутації тим, що після затінення обидві ділянки " "пам'яті змінної існують одночасно. Обидві змінні доступні під одним і тим же " "ім'ям, залежно від того, де ви їх використовуєте у коді." #: src\control-flow-basics/blocks-and-scopes.md:51 msgid "A shadowing variable can have a different type." msgstr "Змінна затінення може мати інший тип." #: src\control-flow-basics/blocks-and-scopes.md:52 msgid "" "Shadowing looks obscure at first, but is convenient for holding on to values " "after `.unwrap()`." msgstr "" "Затінення спочатку виглядає незрозумілим, але є зручним для збереження " "значень після `.unwrap()`." #: src\control-flow-basics/functions.md:20 msgid "" "Declaration parameters are followed by a type (the reverse of some " "programming languages), then a return type." msgstr "" "Параметри оголошення супроводжуються типом (у зворотному порядку порівняно з " "деякими мовами програмування), а потім типом повернення." #: src\control-flow-basics/functions.md:21 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` " "keyword can be used for early return, but the \"bare value\" form is " "idiomatic at the end of a function (refactor `gcd` to use a `return`)." msgstr "" "Останній вираз у тілі функції (або будь-якого блоку) стає значенням, що " "повертається. Просто опустіть `;` в кінці виразу. Ключове слово `return` " "можна використовувати для дострокового повернення, але форма \"голого " "значення\" є ідіоматичною у кінці функції (рефактор `gcd` щоб " "використовувати `return`)." #: src\control-flow-basics/functions.md:23 msgid "" "Some functions have no return value, and return the 'unit type', `()`. The " "compiler will infer this if the `-> ()` return type is omitted." msgstr "" "Деякі функції не мають значення, що повертається, і повертають 'тип " "агрегату', `()`. Компілятор визначить це, якщо тип повернення `-> ()` " "пропущено." #: src\control-flow-basics/functions.md:24 msgid "" "Overloading is not supported -- each function has a single implementation." msgstr "Перевантаження не підтримується - кожна функція має єдину реалізацію." #: src\control-flow-basics/functions.md:25 msgid "" "Always takes a fixed number of parameters. Default arguments are not " "supported. Macros can be used to support variadic functions." msgstr "" "Завжди приймає фіксовану кількість параметрів. Аргументи за замовчуванням не " "підтримуються. Для підтримки варіаційних функцій можна використовувати " "макроси." #: src\control-flow-basics/functions.md:26 msgid "" "Always takes a single set of parameter types. These types can be generic, " "which will be covered later." msgstr "" "Завжди приймає єдиний набір типів параметрів. Ці типи можуть бути " "загальними, що буде розглянуто пізніше." #: src\control-flow-basics/macros.md:3 msgid "" "Macros are expanded into Rust code during compilation, and can take a " "variable number of arguments. They are distinguished by a `!` at the end. " "The Rust standard library includes an assortment of useful macros." msgstr "" "Макроси розгортаються у код Rust під час компіляції і можуть приймати змінну " "кількість аргументів. Вони відрізняються символом `!` у кінці. До " "стандартної бібліотеки Rust входить набір корисних макросів." #: src\control-flow-basics/macros.md:7 msgid "" "`println!(format, ..)` prints a line to standard output, applying formatting " "described in [`std::fmt`](https://doc.rust-lang.org/std/fmt/index.html)." msgstr "" "`println!(format, ..)` виводить рядок у стандартний вивід, застосовуючи " "форматування, описане у [`std::fmt`](https://doc.rust-lang.org/std/fmt/index." "html)." #: src\control-flow-basics/macros.md:8 msgid "" "`format!(format, ..)` works just like `println!` but returns the result as a " "string." msgstr "" "`format!(format, ..)` працює так само, як `println!`, але повертає результат " "у вигляді рядка." #: src\control-flow-basics/macros.md:9 msgid "`dbg!(expression)` logs the value of the expression and returns it." msgstr "`dbg!(вираз)` записує значення виразу і повертає його." #: src\control-flow-basics/macros.md:10 msgid "" "`todo!()` marks a bit of code as not-yet-implemented. If executed, it will " "panic." msgstr "" "`todo!()` позначає частину коду як таку, що ще не виконана. Якщо цей код " "буде виконано, він викличе паніку." #: src\control-flow-basics/macros.md:11 msgid "" "`unreachable!()` marks a bit of code as unreachable. If executed, it will " "panic." msgstr "" "`unreachable!()` позначає ділянку коду як недосяжну. Якщо цей код буде " "виконано, він викличе паніку." #: src\control-flow-basics/macros.md:28 msgid "\"{n}! = {}\"" msgstr "\"{n}! = {}\"" #: src\control-flow-basics/macros.md:34 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 " "not especially critical." msgstr "" "Висновок з цього розділу полягає в тому, що ці загальні зручності існують, і " "те, як ними користуватися. Чому вони визначені як макроси і на що вони " "поширюються, не є особливо важливим." #: src\control-flow-basics/macros.md:38 msgid "" "The course does not cover defining macros, but a later section will describe " "use of derive macros." msgstr "" "У цьому курсі не розглядається визначення макросів, але в наступному розділі " "буде описано використання похідних макросів." #: src\control-flow-basics/exercise.md:3 msgid "" "The [Collatz Sequence](https://en.wikipedia.org/wiki/Collatz_conjecture) is " "defined as follows, for an arbitrary n" msgstr "" "Послідовність Коллатца [Collatz Sequence](https://en.wikipedia.org/wiki/" "Collatz_conjecture) визначається наступним чином, для довільного n" #: src\control-flow-basics/exercise.md:4 src\control-flow-basics/exercise.md:10 msgid "1" msgstr "1" #: src\control-flow-basics/exercise.md:4 msgid " greater than zero:" msgstr " більше нуля:" #: src\control-flow-basics/exercise.md:6 src\control-flow-basics/exercise.md:7 #: src\control-flow-basics/exercise.md:8 msgid "If _n" msgstr "Якщо _n" #: src\control-flow-basics/exercise.md:6 src\control-flow-basics/exercise.md:7 #: src\control-flow-basics/exercise.md:8 msgid "i" msgstr "i" #: src\control-flow-basics/exercise.md:6 msgid "_ is 1, then the sequence terminates at _n" msgstr "_ є 1, то послідовність завершується при _n" #: src\control-flow-basics/exercise.md:6 msgid "_." msgstr "_." #: src\control-flow-basics/exercise.md:7 msgid "_ is even, then _n" msgstr "_ парне, тоді _n" #: src\control-flow-basics/exercise.md:7 src\control-flow-basics/exercise.md:8 msgid "i+1" msgstr "i+1" #: src\control-flow-basics/exercise.md:7 msgid " = n" msgstr " = n" #: src\control-flow-basics/exercise.md:7 msgid " / 2_." msgstr " / 2_." #: src\control-flow-basics/exercise.md:8 msgid "_ is odd, then _n" msgstr "_ непарне, тоді _n" #: src\control-flow-basics/exercise.md:8 msgid " = 3 * n" msgstr " = 3 * n" #: src\control-flow-basics/exercise.md:8 msgid " + 1_." msgstr " + 1_." #: src\control-flow-basics/exercise.md:10 msgid "For example, beginning with _n" msgstr "Наприклад, починаючи з _n" #: src\control-flow-basics/exercise.md:10 msgid "_ = 3:" msgstr "_ = 3:" #: src\control-flow-basics/exercise.md:11 msgid "3 is odd, so _n" msgstr "3 непарне, тому _n" #: src\control-flow-basics/exercise.md:11 msgid "2" msgstr "2" #: src\control-flow-basics/exercise.md:11 msgid "_ = 3 * 3 + 1 = 10;" msgstr "_ = 3 * 3 + 1 = 10;" #: src\control-flow-basics/exercise.md:12 msgid "10 is even, so _n" msgstr "10 парне, тому _n" #: src\control-flow-basics/exercise.md:12 src\bare-metal/aps/better-uart.md:22 msgid "3" msgstr "3" #: src\control-flow-basics/exercise.md:12 msgid "_ = 10 / 2 = 5;" msgstr "_ = 10 / 2 = 5;" #: src\control-flow-basics/exercise.md:13 msgid "5 is odd, so _n" msgstr "5 непарне, тому _n" #: src\control-flow-basics/exercise.md:13 src\bare-metal/aps/better-uart.md:10 msgid "4" msgstr "4" #: src\control-flow-basics/exercise.md:13 msgid "_ = 3 * 15 + 1 = 16;" msgstr "_ = 3 * 15 + 1 = 16;" #: src\control-flow-basics/exercise.md:14 msgid "16 is even, so _n" msgstr "16 парне, тому _n" #: src\control-flow-basics/exercise.md:14 msgid "5" msgstr "5" #: src\control-flow-basics/exercise.md:14 msgid "_ = 16 / 2 = 8;" msgstr "_ = 16 / 2 = 8;" #: src\control-flow-basics/exercise.md:15 msgid "8 is even, so _n" msgstr "8 парне, тому _n" #: src\control-flow-basics/exercise.md:15 src\bare-metal/aps/better-uart.md:14 #: src\bare-metal/aps/better-uart.md:17 msgid "6" msgstr "6" #: src\control-flow-basics/exercise.md:15 msgid "_ = 8 / 2 = 4;" msgstr "_ = 8 / 2 = 4" #: src\control-flow-basics/exercise.md:16 msgid "4 is even, so _n" msgstr "4 парне, тому _n" #: src\control-flow-basics/exercise.md:16 msgid "7" msgstr "7" #: src\control-flow-basics/exercise.md:16 msgid "_ = 4 / 2 = 2;" msgstr "_ = 4 / 2 = 2;" #: src\control-flow-basics/exercise.md:17 msgid "2 is even, so _n" msgstr "2 парне, тому _n" #: src\control-flow-basics/exercise.md:17 src\bare-metal/aps/better-uart.md:12 #: src\bare-metal/aps/better-uart.md:15 msgid "8" msgstr "8" #: src\control-flow-basics/exercise.md:17 msgid "_ = 1; and" msgstr "_ = 1; та" #: src\control-flow-basics/exercise.md:18 msgid "the sequence terminates." msgstr "послідовність завершується." #: src\control-flow-basics/exercise.md:20 msgid "" "Write a function to calculate the length of the collatz sequence for a given " "initial `n`." msgstr "" "Напишіть функцію, яка обчислює довжину коллатц-послідовності для заданого " "початкового `n`." #: src\control-flow-basics/exercise.md:24 src\control-flow-basics/solution.md:4 msgid "/// Determine the length of the collatz sequence beginning at `n`.\n" msgstr "/// Визначте довжину послідовності колатів, яка починається з `n`.\n" #: src\control-flow-basics/solution.md:20 src\concurrency/scoped-threads.md:11 #: src\concurrency/scoped-threads.md:30 msgid "\"Length: {}\"" msgstr "\"Довжина: {}\"" #: src\welcome-day-1-afternoon.md:1 src\welcome-day-2-afternoon.md:1 #: src\welcome-day-3-afternoon.md:1 src\welcome-day-4-afternoon.md:1 msgid "Welcome Back" msgstr "Ласкаво просимо назад" #: src\tuples-and-arrays/tuples-and-arrays.md:3 msgid "" "Tuples and arrays are the first \"compound\" types we have seen. All " "elements of an array have the same type, while tuples can accommodate " "different types. Both types have a size fixed at compile time." msgstr "" "Кортежі та масиви є першими \"складеними\" типами, з якими ми познайомилися. " "Всі елементи масиву мають однаковий тип, тоді як кортежі можуть мати різні " "типи. Обидва типи мають розмір, фіксований під час компіляції." #: src\tuples-and-arrays/tuples-and-arrays.md:9 #: src\tuples-and-arrays/destructuring.md:27 msgid "Arrays" msgstr "Масиви" #: src\tuples-and-arrays/tuples-and-arrays.md:9 msgid "`[T; N]`" msgstr "`[T; N]`" #: src\tuples-and-arrays/tuples-and-arrays.md:9 msgid "`[20, 30, 40]`, `[0; 3]`" msgstr "`[20, 30, 40]`, `[0; 3]`" #: src\tuples-and-arrays/tuples-and-arrays.md:10 #: src\tuples-and-arrays/destructuring.md:9 msgid "Tuples" msgstr "Кортежі" #: src\tuples-and-arrays/tuples-and-arrays.md:10 msgid "`()`, `(T,)`, `(T1, T2)`, ..." msgstr "`()`, `(T,)`, `(T1, T2)`, ..." #: src\tuples-and-arrays/tuples-and-arrays.md:10 msgid "`()`, `('x',)`, `('x', 1.2)`, ..." msgstr "`()`, `('x',)`, `('x', 1.2)`, ..." #: src\tuples-and-arrays/tuples-and-arrays.md:12 msgid "Array assignment and access:" msgstr "Присвоєння масиву та доступ:" #: src\tuples-and-arrays/tuples-and-arrays.md:23 msgid "Tuple assignment and access:" msgstr "Присвоєння кортежу та доступ:" #: src\tuples-and-arrays/tuples-and-arrays.md:38 msgid "Arrays:" msgstr "Масиви:" #: src\tuples-and-arrays/tuples-and-arrays.md:40 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 " "its type_, which means that `[u8; 3]` and `[u8; 4]` are considered two " "different types. Slices, which have a size determined at runtime, are " "covered later." msgstr "" "Значення типу масиву `[T; N]` містить `N` (константа часу компіляції) " "елементів того самого типу `T`. Зверніть увагу, що довжина масиву є " "_частиною його типу_, що означає, що `[u8; 3]` і `[u8; 4]` вважаються двома " "різними типами. Зрізи, розмір яких визначається під час виконання, " "покриваються пізніше." #: src\tuples-and-arrays/tuples-and-arrays.md:45 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 " "avoided using unsafe Rust." msgstr "" "Спробуйте доступ до елементу масиву, що знаходиться за межами масиву. Доступ " "до масиву перевіряється під час виконання. Зазвичай Rust може оптимізувати " "ці перевірки, і їх можна уникнути, використовуючи небезпечний Rust." #: src\tuples-and-arrays/tuples-and-arrays.md:49 msgid "We can use literals to assign values to arrays." msgstr "Ми можемо використовувати літерали для присвоєння значень масивам." #: src\tuples-and-arrays/tuples-and-arrays.md:51 msgid "" "The `println!` macro asks for the debug implementation with the `?` format " "parameter: `{}` gives the default output, `{:?}` gives the debug output. " "Types such as integers and strings implement the default output, but arrays " "only implement the debug output. This means that we must use debug output " "here." msgstr "" "Макрос `println!` запитує реалізацію налагодження за допомогою параметра " "формату `?`: `{}` - виведення за замовчуванням, `{:?}` - виведення " "налагодження. Такі типи, як цілі числа і рядки, реалізують виведення за " "замовчуванням, але масиви реалізують лише виведення для налагодження. Це " "означає, що тут ми повинні використовувати налагоджувальний вивід." #: src\tuples-and-arrays/tuples-and-arrays.md:56 msgid "" "Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be " "easier to read." msgstr "" "Додавання `#`, наприклад `{a:#?}`, викликає формат \"гарного друку\", який " "може бути легшим для читання." #: src\tuples-and-arrays/tuples-and-arrays.md:58 msgid "Tuples:" msgstr "Кортежі:" #: src\tuples-and-arrays/tuples-and-arrays.md:60 msgid "Like arrays, tuples have a fixed length." msgstr "Як і масиви, кортежі мають фіксовану довжину." #: src\tuples-and-arrays/tuples-and-arrays.md:62 msgid "Tuples group together values of different types into a compound type." msgstr "Кортежі групують значення різних типів у складений тип." #: src\tuples-and-arrays/tuples-and-arrays.md:64 msgid "" "Fields of a tuple can be accessed by the period and the index of the value, " "e.g. `t.0`, `t.1`." msgstr "" "Доступ до полів кортежу можна отримати після крапки з індексом значення, " "наприклад. `t.0`, `t.1`." #: src\tuples-and-arrays/tuples-and-arrays.md:66 msgid "" "The empty tuple `()` is also known as the \"unit type\". It is both a type, " "and the only valid value of that type --- that is to say both the type and " "its value are expressed as `()`. It is used to indicate, for example, that a " "function or expression has no return value, as we'll see in a future slide." msgstr "" "Порожній кортеж `()` також відомий як \"тип одиниці\". Це одночасно і тип, і " "єдине допустиме значення цього типу --- тобто і тип, і його значення " "виражаються як `()`. Він використовується, наприклад, для позначення того, " "що функція або вираз не має значення, яке повертається, як ми побачимо на " "наступному слайді." #: src\tuples-and-arrays/tuples-and-arrays.md:70 msgid "" "You can think of it as `void` that can be familiar to you from other " "programming languages." msgstr "" "Ви можете думати про це як про `void`, який може бути знайомий вам з інших " "мов програмування." #: src\tuples-and-arrays/iteration.md:3 msgid "The `for` statement supports iterating over arrays (but not tuples)." msgstr "Оператор `for` підтримує ітерацію над масивами (але не кортежами)." #: src\tuples-and-arrays/iteration.md:18 msgid "" "This functionality uses the `IntoIterator` trait, but we haven't covered " "that yet." msgstr "" "Ця функціональність використовує трейт `IntoIterator`, але ми ще не " "розглядали його." #: src\tuples-and-arrays/iteration.md:20 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 " "`debug_assert!` compile to nothing in release builds." msgstr "" "Макрос `assert_ne!` тут новий. Існують також макроси `assert_eq!` та `assert!" "`. Вони завжди перевіряються під час виконання, варіанти лише для " "налагодження, такі як `debug_assert!`, не компілюються у релізних збірках." #: src\tuples-and-arrays/match.md:3 msgid "" "The `match` keyword lets you match a value against one or more _patterns_. " "The comparisons are done from top to bottom and the first match wins." msgstr "" "Ключове слово `match` дозволяє зіставити значення з одним або декількома " "_шаблонами_. Порівняння відбуваються зверху вниз, і виграє перший збіг." #: src\tuples-and-arrays/match.md:6 msgid "The patterns can be simple values, similarly to `switch` in C and C++:" msgstr "" "Шаблони можуть бути простими значеннями, подібно до `switch` у C та C++:" #: src\tuples-and-arrays/match.md:10 msgid "'x'" msgstr "'x'" #: src\tuples-and-arrays/match.md:12 msgid "'q'" msgstr "'q'" #: src\tuples-and-arrays/match.md:12 msgid "\"Quitting\"" msgstr "\"Виходжу\"" #: src\tuples-and-arrays/match.md:13 src\std-traits/solution.md:16 #: src\error-handling/exercise.md:62 src\error-handling/exercise.md:64 #: src\error-handling/solution.md:61 src\error-handling/solution.md:63 msgid "'a'" msgstr "'a'" #: src\tuples-and-arrays/match.md:13 msgid "'s'" msgstr "'s'" #: src\tuples-and-arrays/match.md:13 msgid "'w'" msgstr "'w'" #: src\tuples-and-arrays/match.md:13 msgid "'d'" msgstr "'d'" #: src\tuples-and-arrays/match.md:13 msgid "\"Moving around\"" msgstr "Пересування" #: src\tuples-and-arrays/match.md:14 src\error-handling/exercise.md:54 #: src\error-handling/exercise.md:56 src\error-handling/exercise.md:64 #: src\error-handling/solution.md:53 src\error-handling/solution.md:55 #: src\error-handling/solution.md:63 msgid "'0'" msgstr "'0'" #: src\tuples-and-arrays/match.md:14 src\error-handling/exercise.md:54 #: src\error-handling/exercise.md:56 src\error-handling/exercise.md:64 #: src\error-handling/solution.md:53 src\error-handling/solution.md:55 #: src\error-handling/solution.md:63 msgid "'9'" msgstr "'9'" #: src\tuples-and-arrays/match.md:14 msgid "\"Number input\"" msgstr "\"Введення числа\"" #: src\tuples-and-arrays/match.md:15 msgid "\"Lowercase: {key}\"" msgstr "\"Нижній регістр: {key}\"" #: src\tuples-and-arrays/match.md:16 msgid "\"Something else\"" msgstr "\"Щось інше\"" #: src\tuples-and-arrays/match.md:21 msgid "" "The `_` pattern is a wildcard pattern which matches any value. The " "expressions _must_ be irrefutable, meaning that it covers every possibility, " "so `_` is often used as the final catch-all case." msgstr "" "Шаблон `_` - це шаблон підстановки, який відповідає будь-якому значенню. " "Вирази _повинні_ бути неспростовними, тобто охоплювати всі можливі варіанти, " "тому `_` часто використовується як остаточний всеохоплюючий випадок." #: src\tuples-and-arrays/match.md:25 msgid "" "Match can be used as an expression. Just like like `if`, each match arm must " "have the same type. The type is the last expression of the block, if any. In " "the example above, the type is `()`." msgstr "" "Match можна використовувати як вираз. Як і у випадку з `if`, кожна гілка " "зіставлення повинно мати однаковий тип. Тип - це останній вираз у блоці, " "якщо такий є. У наведеному вище прикладі тип `()`." #: src\tuples-and-arrays/match.md:28 msgid "" "A variable in the pattern (`key` in this example) will create a binding that " "can be used within the match arm." msgstr "" "Змінна у шаблоні (у цьому прикладі - `key`) створить прив'язку, яку можна " "використовувати у гілці зіставлення." #: src\tuples-and-arrays/match.md:31 msgid "A match guard causes the arm to match only if the condition is true." msgstr "" "Запобіжник зіставлення призводить до гілці зіставлення, тільки якщо умова " "істинна." #: src\tuples-and-arrays/match.md:35 src\user-defined-types/named-structs.md:40 #: src\user-defined-types/enums.md:28 src\methods-and-traits/methods.md:64 msgid "Key Points:" msgstr "Ключові моменти:" #: src\tuples-and-arrays/match.md:36 msgid "" "You might point out how some specific characters are being used when in a " "pattern" msgstr "" "Ви можете вказати, як деякі конкретні символи використовуються в шаблоні" #: src\tuples-and-arrays/match.md:37 msgid "`|` as an `or`" msgstr "`|` як `or`" #: src\tuples-and-arrays/match.md:38 msgid "`..` can expand as much as it needs to be" msgstr "`..` може розширюватися настільки, наскільки це потрібно" #: src\tuples-and-arrays/match.md:39 msgid "`1..=5` represents an inclusive range" msgstr "`1..=5` представляє включний діапазон" #: src\tuples-and-arrays/match.md:40 msgid "`_` is a wild card" msgstr "`_` - символ підстановки" #: src\tuples-and-arrays/match.md:42 msgid "" "Match guards as a separate syntax feature are important and necessary when " "we wish to concisely express more complex ideas than patterns alone would " "allow." msgstr "" "Запобіжники зіставлення як окрема функція синтаксису є важливою та " "необхідною, коли ми хочемо стисло висловити більш складні ідеї, ніж це " "дозволили б самі шаблони." #: src\tuples-and-arrays/match.md:43 msgid "" "They are not the same as separate `if` expression inside of the match arm. " "An `if` expression inside of the branch block (after `=>`) happens after the " "match arm is selected. Failing the `if` condition inside of that block won't " "result in other arms of the original `match` expression being considered." msgstr "" "Це не те саме, що окремий вираз `if` всередині гілкі зіставлення. Вираз `if` " "всередині блоку розгалуження (після `=>`) виникає після вибору гілкі " "зіставлення. Невиконання умови `if` всередині цього блоку не призведе до " "розгляду інших частин вихідного виразу `match`." #: src\tuples-and-arrays/match.md:45 msgid "" "The condition defined in the guard applies to every expression in a pattern " "with an `|`." msgstr "" "Умова, визначена в запобіжнику, застосовується до кожного виразу в шаблоні з " "`|`." #: src\tuples-and-arrays/destructuring.md:3 msgid "" "Destructuring is a way of extracting data from a data structure by writing a " "pattern that is matched up to the data structure, binding variables to " "subcomponents of the data structure." msgstr "" "Деструктуризація - це спосіб вилучення даних зі структури даних шляхом " "написання шаблону, який відповідає структурі даних, прив'язуючи змінні до " "підкомпонентів структури даних." #: src\tuples-and-arrays/destructuring.md:7 msgid "You can destructure tuples and arrays by matching on their elements:" msgstr "" "Ви можете деструктурувати кортежі та масиви, зіставляючи їхні елементи:" #: src\tuples-and-arrays/destructuring.md:18 msgid "\"on Y axis\"" msgstr "\"по осі Y\"" #: src\tuples-and-arrays/destructuring.md:19 msgid "\"on X axis\"" msgstr "\"по осі X\"" #: src\tuples-and-arrays/destructuring.md:20 msgid "\"left of Y axis\"" msgstr "\"зліва від осі Y\"" #: src\tuples-and-arrays/destructuring.md:21 msgid "\"below X axis\"" msgstr "\"нижче осі X\"" #: src\tuples-and-arrays/destructuring.md:22 msgid "\"first quadrant\"" msgstr "\"перший квадрант\"" #: src\tuples-and-arrays/destructuring.md:33 msgid "\"Tell me about {triple:?}\"" msgstr "\"Розкажи мені про {triple:?}\"" #: src\tuples-and-arrays/destructuring.md:35 msgid "\"First is 0, y = {y}, and z = {z}\"" msgstr "\"Перше число 0, y = {y}, and z = {z}\"" #: src\tuples-and-arrays/destructuring.md:36 msgid "\"First is 1 and the rest were ignored\"" msgstr "\"Перший число 1, а решту проігноровано\"" #: src\tuples-and-arrays/destructuring.md:37 msgid "\"All elements were ignored\"" msgstr "\"Всі елементи були проігноровані\"" #: src\tuples-and-arrays/destructuring.md:44 msgid "Create a new array pattern using `_` to represent an element." msgstr "" "Створіть новий шаблон масиву, використовуючи `_` для представлення елемента." #: src\tuples-and-arrays/destructuring.md:45 msgid "Add more values to the array." msgstr "Додайте більше значень до масиву." #: src\tuples-and-arrays/destructuring.md:46 msgid "" "Point out that how `..` will expand to account for different number of " "elements." msgstr "" "Зверніть увагу на те, як `..` буде розширюватися, щоб врахувати різну " "кількість елементів." #: src\tuples-and-arrays/destructuring.md:47 msgid "Show matching against the tail with patterns `[.., b]` and `[a@..,b]`" msgstr "" "Покажіть зіставлення проти хвоста з хвостом за допомогою шаблонів `[.., " "b]` і `[a@..,b]`" #: src\tuples-and-arrays/exercise.md:3 msgid "Arrays can contain other arrays:" msgstr "Масиви можуть містити інші масиви:" #: src\tuples-and-arrays/exercise.md:9 msgid "What is the type of this variable?" msgstr "Який тип цієї змінної?" #: src\tuples-and-arrays/exercise.md:11 msgid "" "Use an array such as the above to write a function `transpose` which will " "transpose a matrix (turn rows into columns):" msgstr "" "Використовуйте масив, подібний до наведеного вище, для написання функції " "`transpose`, яка транспонує матрицю (перетворює рядки у стовпці):" #: src\tuples-and-arrays/exercise.md:21 msgid "Hard-code both functions to operate on 3 × 3 matrices." msgstr "Жорстко закодуйте обидві функції для роботи з матрицями 3 × 3." #: src\tuples-and-arrays/exercise.md:23 msgid "" "Copy the code below to and implement the " "functions:" msgstr "" "Скопіюйте наведений нижче код до та застосуйте " "функції:" #: src\tuples-and-arrays/exercise.md:27 src\methods-and-traits/exercise.md:20 #: src\borrowing/exercise.md:14 src\unsafe-rust/exercise.md:49 msgid "// TODO: remove this when you're done with your implementation.\n" msgstr "// TODO: видаліть це, коли закінчите реалізацію.\n" #: src\tuples-and-arrays/exercise.md:36 src\tuples-and-arrays/solution.md:34 msgid "// <-- the comment makes rustfmt add a newline\n" msgstr "// <-- коментар змушує rustfmt додати новий рядок\n" #: src\tuples-and-arrays/exercise.md:41 src\tuples-and-arrays/solution.md:39 msgid "\"matrix: {:#?}\"" msgstr "\"матриця: {:#?}\"" #: src\tuples-and-arrays/exercise.md:43 src\tuples-and-arrays/solution.md:41 msgid "\"transposed: {:#?}\"" msgstr "\"транспонована: {:#?}\"" #: src\tuples-and-arrays/solution.md:17 src\tuples-and-arrays/solution.md:25 msgid "//\n" msgstr "//\n" #: src\references/shared.md:3 msgid "" "A reference provides a way to access another value without taking " "responsibility for the value, and is also called \"borrowing\". Shared " "references are read-only, and the referenced data cannot change." msgstr "" "Посилання дає змогу отримати доступ до іншого значення, не беручи на себе " "відповідальність за це значення, і також називається \"запозиченням\". " "Спільні посилання доступні лише для читання, і дані, на які вони " "посилаються, не можуть бути змінені." #: src\references/shared.md:19 msgid "" "A shared reference to a type `T` has type `&T`. A reference value is made " "with the `&` operator. The `*` operator \"dereferences\" a reference, " "yielding its value." msgstr "" "Спільне посилання на тип `T` має тип `&T`. Значення посилання робиться за " "допомогою оператора `&`. Оператор `*` \"розіменовує\" посилання, повертаючи " "його значення." #: src\references/shared.md:22 msgid "Rust will statically forbid dangling references:" msgstr "Rust статично забороняє висячі посилання:" #: src\references/shared.md:34 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 " "access the value, but is still \"owned\" by the original variable. The " "course will get into more detail on ownership in day 3." msgstr "" "Кажуть, що посилання \"позичає\" значення, на яке воно посилається, і це " "гарна модель для слухачів, які не знайомі з вказівниками: код може " "використовувати посилання для доступу до значення, але все одно залишається " "\"власністю\" вихідної змінної. Більш детально про володіння буде розглянуто " "на третьому дні курсу." #: src\references/shared.md:39 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+" "+ will recognize references as pointers. Later parts of the course will " "cover how Rust prevents the memory-safety bugs that come from using raw " "pointers." msgstr "" "Посилання реалізовано як вказівники, і ключовою перевагою є те, що вони " "можуть бути набагато меншими за об'єкт, на який вони вказують. Слухачі, " "знайомі з C або C++, розпізнають посилання як вказівники. У наступних " "частинах курсу буде розглянуто, як Rust запобігає помилкам, пов'язаним з " "безпекою пам'яті, які виникають при використанні сирих вказівників." #: src\references/shared.md:44 msgid "" "Rust does not automatically create references for you - the `&` is always " "required." msgstr "" "Rust не створює посилання автоматично - завжди потрібно використовувати `&`." #: src\references/shared.md:47 msgid "" "Rust will auto-dereference in some cases, in particular when invoking " "methods (try `r.count_ones()`). There is no need for an `->` operator like " "in C++." msgstr "" "У деяких випадках Rust виконує автоматичне розіменування, зокрема під час " "виклику методів (спробуйте `ref_x.count_ones()`). Тут не потрібен оператор " "`->`, як у C++." #: src\references/shared.md:51 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 " "different from C++, where assignment to a reference changes the referenced " "value." msgstr "" "У цьому прикладі `r` є мутабельним, тому його можна перепризначити (`r = " "&b`). Зверніть увагу, що це повторно зв'язує `r`, так що він посилається на " "щось інше. Це відрізняється від C++, де присвоювання посилання змінює " "значення, на яке воно посилається." #: src\references/shared.md:56 msgid "" "A shared reference does not allow modifying the value it refers to, even if " "that value was mutable. Try `*r = 'X'`." msgstr "" "Спільне посилання не дозволяє змінювати значення, на яке воно посилається, " "навіть якщо це значення було змінним. Спробуйте `*r = 'X'`." #: src\references/shared.md:59 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 " "a reference to `point`, but `point` will be deallocated when the function " "returns, so this will not compile." msgstr "" "Rust відстежує час життя всіх посилань, щоб переконатися, що вони живуть " "достатньо довго. У безпечному Rust'і не може бути \"висячих\" посилань. " "Функція `x_axis` поверне посилання на `point`, але `point` буде звільнено, " "коли функція повернеться, тому це не буде скомпільовано." #: src\references/shared.md:64 msgid "We will talk more about borrowing when we get to ownership." msgstr "Про запозичення ми поговоримо більше, коли дійдемо до володіння." #: src\references/exclusive.md:3 msgid "" "Exclusive references, also known as mutable references, allow changing the " "value they refer to. They have type `&mut T`." msgstr "" "Ексклюзивні посилання, також відомі як мутабельні посилання, дозволяють " "змінювати значення, на яке вони посилаються. Вони мають тип `&mut T`." #: src\references/exclusive.md:20 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, " "and the referenced value cannot be accessed while the exclusive reference " "exists. Try making an `&point.0` or changing `point.0` while `x_coord` is " "alive." msgstr "" "\"Ексклюзивне\" означає, що тільки це посилання може бути використане для " "доступу до значення. Жодні інші посилання (спільні або ексклюзивні) не " "можуть існувати одночасно, і до значення, на яке посилаються, не можна " "отримати доступ, поки існує ексклюзивне посилання. Спробуйте створити " "`&point.0` або змінити `point.0`, поки існує `x_coord`." #: src\references/exclusive.md:25 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 " "bound to different values, while the second represents an exclusive " "reference to a mutable value." msgstr "" "Обов’язково зверніть увагу на різницю між `let mut x_coord: &i32` і `let " "x_coord: &mut i32`. Перший представляє спільне посилання, яке можна " "прив'язати до різних значень, тоді як другий представляє ексклюзивне " "посилання на значення, що змінюється." #: src\references/exercise.md:3 msgid "" "We will create a few utility functions for 3-dimensional geometry, " "representing a point as `[f64;3]`. It is up to you to determine the function " "signatures." msgstr "" "Ми створимо декілька утиліт для тривимірної геометрії, що представляють " "точку у вигляді `[f64;3]`. Ви самі визначаєте сигнатури функцій." #: src\references/exercise.md:7 msgid "" "// Calculate the magnitude of a vector by summing the squares of its " "coordinates\n" "// and taking the square root. Use the `sqrt()` method to calculate the " "square\n" "// root, like `v.sqrt()`.\n" msgstr "" "// Обчисліть величину вектора шляхом додавання квадратів його координат\n" "// і вилучення квадратного кореня. Використовуйте метод `qrt()` для для " "обчислення квадратного\n" "// кореня, наприклад `v.sqrt()`.\n" #: src\references/exercise.md:15 msgid "" "// Normalize a vector by calculating its magnitude and dividing all of its\n" "// coordinates by that magnitude.\n" msgstr "" "// Нормалізуйте вектор, обчисливши його величину і поділивши всі його\n" "// координати на цю величину.\n" #: src\references/exercise.md:23 msgid "// Use the following `main` to test your work.\n" msgstr "Використовуйте наступний `main` для тестування вашої роботи.\n" #: src\references/exercise.md:28 src\references/solution.md:23 msgid "\"Magnitude of a unit vector: {}\"" msgstr "\"Величина одиничного вектора: {}\"" #: src\references/exercise.md:33 src\references/solution.md:28 msgid "\"Magnitude of {v:?}: {}\"" msgstr "\"Величина {v:?}: {}\"" #: src\references/exercise.md:35 src\references/solution.md:30 msgid "\"Magnitude of {v:?} after normalization: {}\"" msgstr "\"Величина {v:?} після нормалізації: {}\"" #: src\references/solution.md:4 msgid "/// Calculate the magnitude of the given vector.\n" msgstr "/// Обчисліть величину заданого вектора.\n" #: src\references/solution.md:12 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:3 msgid "Like C and C++, Rust has support for custom structs:" msgstr "Подібно до C і C++, Rust підтримує користувальницькі структури:" #: src\user-defined-types/named-structs.md:12 msgid "\"{} is {} years old\"" msgstr "\"{} віком {} років\"" #: src\user-defined-types/named-structs.md:17 #: src\android/interoperability/with-c/bindgen.md:87 msgid "\"Peter\"" msgstr "\"Peter\"" #: src\user-defined-types/named-structs.md:25 msgid "\"Avery\"" msgstr "\"Avery\"" #: src\user-defined-types/named-structs.md:31 msgid "\"Jackie\"" msgstr "\"Jackie\"" #: src\user-defined-types/named-structs.md:42 msgid "Structs work like in C or C++." msgstr "Структури працюють як у C або C++." #: src\user-defined-types/named-structs.md:43 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:44 msgid "Unlike in C++, there is no inheritance between structs." msgstr "На відміну від C++, між структурами немає успадкування." #: src\user-defined-types/named-structs.md:45 msgid "" "This may be a good time to let people know there are different types of " "structs." msgstr "" "Це може бути вдалий час, щоб повідомити людям, що існують різні типи " "структур." #: src\user-defined-types/named-structs.md:46 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 " "value itself." msgstr "" "Структури нульового розміру (наприклад, `struct Foo;`) можуть бути " "використані при реалізації трейту на якомусь типі, але не мають даних, які " "ви хочете зберігати у самому значенні." #: src\user-defined-types/named-structs.md:47 msgid "" "The next slide will introduce Tuple structs, used when the field names are " "not important." msgstr "" "На наступному слайді буде представлено структури кортежу, які " "використовуються, коли імена полів не важливі." #: src\user-defined-types/named-structs.md:48 msgid "" "If you already have variables with the right names, then you can create the " "struct using a shorthand." msgstr "" "Якщо у вас уже є змінні з правильними іменами, ви можете створити структуру " "за допомогою скорочення:" #: src\user-defined-types/named-structs.md:50 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 " "the last element." msgstr "" "Синтаксис `..avery` дозволяє нам скопіювати більшість полів зі старої " "структури без необхідності явного введення всіх полів. Це завжди має бути " "останнім елементом." #: src\user-defined-types/tuple-structs.md:6 msgid "If the field names are unimportant, you can use a tuple struct:" msgstr "Якщо імена полів неважливі, ви можете використати структуру кортежу:" #: src\user-defined-types/tuple-structs.md:13 msgid "\"({}, {})\"" msgstr "\"({}, {})\"" #: src\user-defined-types/tuple-structs.md:17 msgid "This is often used for single-field wrappers (called newtypes):" msgstr "" "Це часто використовується для обгорток з одним полем (так званих newtypes):" #: src\user-defined-types/tuple-structs.md:24 msgid "\"Ask a rocket scientist at NASA\"" msgstr "\"Запитайте вченого-ракетника з NASA\"" #: src\user-defined-types/tuple-structs.md:28 #: src\android/interoperability/cpp/cpp-bridge.md:50 #: src\bare-metal/microcontrollers/type-state.md:14 #: src\async/pitfalls/cancellation.md:96 src\async/pitfalls/cancellation.md:99 msgid "// ...\n" msgstr "// ...\n" #: src\user-defined-types/tuple-structs.md:40 msgid "" "Newtypes are a great way to encode additional information about the value in " "a primitive type, for example:" msgstr "" "Newtypes — чудовий спосіб закодувати додаткову інформацію про значення в " "примітивному типі, наприклад:" #: src\user-defined-types/tuple-structs.md:41 msgid "The number is measured in some units: `Newtons` in the example above." msgstr "" "Число вимірюється в деяких одиницях: у наведеному вище прикладі `Newtons`." #: src\user-defined-types/tuple-structs.md:42 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)`." msgstr "" "Значення пройшло певну перевірку під час створення, тому вам більше не " "потрібно перевіряти його знову при кожному використанні: " "`PhoneNumber(String)` або `OddNumber(u32)`." #: src\user-defined-types/tuple-structs.md:43 msgid "" "Demonstrate how to add a `f64` value to a `Newtons` type by accessing the " "single field in the newtype." msgstr "" "Продемонструйте, як додати значення `f64` до типу `Newtons`, отримавши " "доступ до єдиного поля в newtype." #: src\user-defined-types/tuple-structs.md:44 msgid "" "Rust generally doesn’t like inexplicit things, like automatic unwrapping or " "for instance using booleans as integers." msgstr "" "Rust зазвичай не любить неявних речей, таких як автоматичне розгортання або, " "наприклад, використання логічних значень як цілих чисел." #: src\user-defined-types/tuple-structs.md:45 msgid "Operator overloading is discussed on Day 3 (generics)." msgstr "Перевантаження операторів обговорюється в день 3 (дженерики)." #: src\user-defined-types/tuple-structs.md:46 msgid "" "The example is a subtle reference to the [Mars Climate Orbiter](https://en." "wikipedia.org/wiki/Mars_Climate_Orbiter) failure." msgstr "" "Цей приклад є тонким посиланням на невдачу [Mars Climate Orbiter](https://en." "wikipedia.org/wiki/Mars_Climate_Orbiter)." #: src\user-defined-types/enums.md:3 msgid "" "The `enum` keyword allows the creation of a type which has a few different " "variants:" msgstr "" "Ключове слово `enum` дозволяє створити тип, який має кілька різних варіантів:" #: src\user-defined-types/enums.md:15 msgid "// Simple variant\n" msgstr "// Простий варіант\n" #: src\user-defined-types/enums.md:16 msgid "// Tuple variant\n" msgstr "// Варіант кортежу\n" #: src\user-defined-types/enums.md:17 msgid "// Struct variant\n" msgstr "// Варіант структури\n" #: src\user-defined-types/enums.md:22 msgid "\"On this turn: {:?}\"" msgstr "\"На цьому повороті: {:?}\"" #: src\user-defined-types/enums.md:30 msgid "Enumerations allow you to collect a set of values under one type." msgstr "Переліки дозволяють збирати набір значень під одним типом." #: src\user-defined-types/enums.md:31 msgid "" "`Direction` is a type with variants. There are two values of `Direction`: " "`Direction::Left` and `Direction::Right`." msgstr "" "Напрямок - це тип з варіантами. Існує два значення `Direction`: `Direction::" "Left` та `Direction::Right`." #: src\user-defined-types/enums.md:32 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 " "in a `PlayerMove` value." msgstr "" "`PlayerMove` - це тип з трьома варіантами. На додаток до корисного " "навантаження, Rust зберігатиме дискримінант, щоб під час виконання знати, " "який варіант є у значенні `PlayerMove`." #: src\user-defined-types/enums.md:33 msgid "This might be a good time to compare structs and enums:" msgstr "Це може бути гарний час для порівняння структури та переліки:" #: src\user-defined-types/enums.md:34 msgid "" "In both, you can have a simple version without fields (unit struct) or one " "with different types of fields (variant payloads)." msgstr "" "В обох ви можете мати просту версію без полів (структура одиниць) або з " "різними типами полів (різні варіанти корисного навантаження)." #: src\user-defined-types/enums.md:35 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 " "all defined in an enum." msgstr "" "Ви навіть можете реалізувати різні варіанти переліку окремими структурами, " "але тоді вони не будуть одного типу, як якщо б всі вони були визначені в " "переліку." #: src\user-defined-types/enums.md:36 msgid "Rust uses minimal space to store the discriminant." msgstr "" "Rust використовує мінімальний обсяг пам'яті для зберігання дискримінанта." #: src\user-defined-types/enums.md:37 msgid "If necessary, it stores an integer of the smallest required size" msgstr "Якщо потрібно, він зберігає ціле число найменшого необхідного розміру" #: src\user-defined-types/enums.md:38 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\"). For example, `Option<&u8>` stores either a pointer to an " "integer or `NULL` for the `None` variant." msgstr "" "Якщо допустимі значення варіантів не покривають усіх бітових шаблонів, для " "кодування дискримінанта буде використано неприпустимі бітові шаблони " "(\"нішева оптимізація\"). Наприклад, `Option<&u8>` зберігає або вказівник на " "ціле число, або `NULL` для варіанта `None`." #: src\user-defined-types/enums.md:42 msgid "" "You can control the discriminant if needed (e.g., for compatibility with C):" msgstr "" "За потреби можна керувати дискримінантом (наприклад, для сумісності з C):" #: src\user-defined-types/enums.md:60 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:63 #: src\user-defined-types/static-and-const.md:67 #: src\memory-management/review.md:47 src\memory-management/move.md:91 #: src\smart-pointers/box.md:73 src\borrowing/shared.md:31 msgid "More to Explore" msgstr "Більше інформації для вивчення" #: src\user-defined-types/enums.md:65 msgid "" "Rust has several optimizations it can employ to make enums take up less " "space." msgstr "" "Rust має декілька оптимізацій, які можна застосувати, щоб зменшити розмір " "переліків." #: src\user-defined-types/enums.md:67 msgid "" "Null pointer optimization: For [some types](https://doc.rust-lang.org/std/" "option/#representation), Rust guarantees that `size_of::()` equals " "`size_of::>()`." msgstr "" "Оптимізація нульового покажчика: для [деяких типів](https://doc.rust-lang." "org/std/option/#representation) Rust гарантує, що `size_of::()` дорівнює " "`size_of::