msgid "" msgstr "" "Project-Id-Version: Comprehensive Rust 🦀\n" "POT-Creation-Date: 2024-06-27T18:39:25-04: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 src/index.md msgid "Welcome to Comprehensive Rust 🦀" msgstr "Ласкаво просимо в Comprehensive Rust 🦀" #: src/SUMMARY.md src/running-the-course.md msgid "Running the Course" msgstr "Проведення курсу" #: src/SUMMARY.md src/running-the-course/course-structure.md:1 msgid "Course Structure" msgstr "Структура курсу" #: src/SUMMARY.md src/running-the-course/keyboard-shortcuts.md:1 msgid "Keyboard Shortcuts" msgstr "Гарячі клавіші" #: src/SUMMARY.md src/running-the-course/translations.md:1 msgid "Translations" msgstr "Переклади" #: src/SUMMARY.md src/cargo.md msgid "Using Cargo" msgstr "Використання Cargo" #: src/SUMMARY.md msgid "Rust Ecosystem" msgstr "Екосистема Rust" #: src/SUMMARY.md msgid "Code Samples" msgstr "Приклади коду" #: src/SUMMARY.md msgid "Running Cargo Locally" msgstr "Локальний запуск Cargo" #: src/SUMMARY.md msgid "Day 1: Morning" msgstr "День 1: Ранок" #: src/SUMMARY.md src/concurrency/welcome-async.md msgid "Welcome" msgstr "Ласкаво просимо" #: src/SUMMARY.md src/hello-world.md src/types-and-values/hello-world.md:5 msgid "Hello, World" msgstr "Hello World!" #: src/SUMMARY.md src/hello-world/what-is-rust.md:5 msgid "What is Rust?" msgstr "Що таке Rust?" #: src/SUMMARY.md src/hello-world/benefits.md:5 msgid "Benefits of Rust" msgstr "Переваги Rust" #: src/SUMMARY.md src/hello-world/playground.md:5 msgid "Playground" msgstr "Ігровий майданчик" #: src/SUMMARY.md src/types-and-values.md msgid "Types and Values" msgstr "Типи та значення" #: src/SUMMARY.md src/types-and-values/variables.md:5 msgid "Variables" msgstr "Змінні" #: src/SUMMARY.md src/types-and-values/values.md:5 msgid "Values" msgstr "Значення" #: src/SUMMARY.md src/types-and-values/arithmetic.md:5 msgid "Arithmetic" msgstr "Арифметика" #: src/SUMMARY.md src/types-and-values/inference.md:5 msgid "Type Inference" msgstr "Виведення типів" #: src/SUMMARY.md src/types-and-values/exercise.md:5 msgid "Exercise: Fibonacci" msgstr "Вправа: Фібоначчі" #: src/SUMMARY.md src/types-and-values/solution.md:1 #: src/control-flow-basics/solution.md:1 src/tuples-and-arrays/solution.md:1 #: src/references/solution.md:1 src/user-defined-types/solution.md:1 #: src/pattern-matching/solution.md:1 src/methods-and-traits/solution.md:1 #: src/generics/solution.md:1 src/std-types/solution.md:1 #: src/std-traits/solution.md:1 src/memory-management/solution.md:1 #: src/smart-pointers/solution.md:1 src/borrowing/solution.md:1 #: src/lifetimes/solution.md:1 src/iterators/solution.md:1 #: src/modules/solution.md:1 src/testing/solution.md:1 #: src/error-handling/solution.md:1 src/unsafe-rust/solution.md:1 msgid "Solution" msgstr "Рішення" #: src/SUMMARY.md src/control-flow-basics.md msgid "Control Flow Basics" msgstr "Основи потоку керування" #: src/SUMMARY.md msgid "`if` Expressions" msgstr "Вирази `if`" #: src/SUMMARY.md src/control-flow-basics/loops.md:5 msgid "Loops" msgstr "Цикли" #: src/SUMMARY.md src/control-flow-basics/loops/for.md:1 msgid "`for`" msgstr "`for`" #: src/SUMMARY.md src/control-flow-basics/loops/loop.md:1 msgid "`loop`" msgstr "`loop`" #: src/SUMMARY.md src/control-flow-basics/break-continue.md:5 msgid "`break` and `continue`" msgstr "`break` та `continue`" #: src/SUMMARY.md src/control-flow-basics/break-continue/labels.md:1 msgid "Labels" msgstr "Мітки" #: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes.md:5 msgid "Blocks and Scopes" msgstr "Блоки та області застосування" #: src/SUMMARY.md src/control-flow-basics/blocks-and-scopes/scopes.md:1 msgid "Scopes and Shadowing" msgstr "Області видимості та затінення" #: src/SUMMARY.md src/control-flow-basics/functions.md:5 msgid "Functions" msgstr "Функції" #: src/SUMMARY.md src/control-flow-basics/macros.md:5 msgid "Macros" msgstr "Макроси" #: src/SUMMARY.md src/control-flow-basics/exercise.md:5 msgid "Exercise: Collatz Sequence" msgstr "Вправа: Послідовність Коллатца" #: src/SUMMARY.md msgid "Day 1: Afternoon" msgstr "День 1: Полудень" #: src/SUMMARY.md src/tuples-and-arrays.md msgid "Tuples and Arrays" msgstr "Кортежі та масиви" #: src/SUMMARY.md src/tuples-and-arrays/arrays.md:5 msgid "Arrays" msgstr "Масиви" #: src/SUMMARY.md src/tuples-and-arrays/tuples.md:5 msgid "Tuples" msgstr "Кортежі" #: src/SUMMARY.md src/tuples-and-arrays/iteration.md:5 msgid "Array Iteration" msgstr "Ітерація масиву" #: src/SUMMARY.md src/tuples-and-arrays/destructuring.md:5 msgid "Patterns and Destructuring" msgstr "Патерни та деструктуризація" #: src/SUMMARY.md src/tuples-and-arrays/exercise.md:5 msgid "Exercise: Nested Arrays" msgstr "Вправа: Вкладені масиви" #: src/SUMMARY.md src/references.md msgid "References" msgstr "Посилання" #: src/SUMMARY.md src/references/shared.md:5 msgid "Shared References" msgstr "Спільні посилання" #: src/SUMMARY.md src/references/exclusive.md:5 msgid "Exclusive References" msgstr "Ексклюзивні посилання" #: src/SUMMARY.md msgid "Slices: `&[T]`" msgstr "Зрізи: `&[T]`" #: src/SUMMARY.md src/references/strings.md:9 msgid "Strings" msgstr "Рядки" #: src/SUMMARY.md src/references/exercise.md:5 msgid "Exercise: Geometry" msgstr "Вправа: Геометрія" #: src/SUMMARY.md src/user-defined-types.md msgid "User-Defined Types" msgstr "Типи, які визначаються користувачем" #: src/SUMMARY.md src/user-defined-types/named-structs.md:5 msgid "Named Structs" msgstr "Іменовані структури" #: src/SUMMARY.md src/user-defined-types/tuple-structs.md:9 msgid "Tuple Structs" msgstr "Кортежні структури" #: src/SUMMARY.md src/user-defined-types/enums.md:5 #: src/pattern-matching/destructuring-enums.md:5 msgid "Enums" msgstr "Перелічувані типи" #: src/SUMMARY.md msgid "Static" msgstr "Статика" #: src/SUMMARY.md msgid "Const" msgstr "Константи" #: src/SUMMARY.md src/user-defined-types/aliases.md:5 msgid "Type Aliases" msgstr "Псевдоніми типу" #: src/SUMMARY.md src/user-defined-types/exercise.md:5 msgid "Exercise: Elevator Events" msgstr "Вправа: події в ліфті" #: src/SUMMARY.md msgid "Day 2: Morning" msgstr "День 2: Ранок" #: src/SUMMARY.md src/pattern-matching.md msgid "Pattern Matching" msgstr "Зіставлення зразків" #: src/SUMMARY.md src/pattern-matching/match.md:5 msgid "Matching Values" msgstr "Співставлення значень" #: src/SUMMARY.md msgid "Destructuring Structs" msgstr "Деструктурування структур" #: src/SUMMARY.md msgid "Destructuring Enums" msgstr "Деструктурування переліків" #: src/SUMMARY.md src/pattern-matching/let-control-flow.md:5 msgid "Let Control Flow" msgstr "Потік контролю Let" #: src/SUMMARY.md src/pattern-matching/exercise.md:5 msgid "Exercise: Expression Evaluation" msgstr "Вправа: обчислення виразу" #: src/SUMMARY.md src/methods-and-traits.md msgid "Methods and Traits" msgstr "Методи та Трейти" #: src/SUMMARY.md src/methods-and-traits/methods.md:5 msgid "Methods" msgstr "Методи" #: src/SUMMARY.md src/methods-and-traits/traits.md:5 msgid "Traits" msgstr "Трейти" #: src/SUMMARY.md src/methods-and-traits/traits/implementing.md:1 msgid "Implementing Traits" msgstr "Реалізація трейтів" #: src/SUMMARY.md src/methods-and-traits/traits/supertraits.md:1 msgid "Supertraits" msgstr "Супертрейти" #: src/SUMMARY.md src/methods-and-traits/traits/associated-types.md:1 msgid "Associated Types" msgstr "Асоційовані типи" #: src/SUMMARY.md src/methods-and-traits/deriving.md:5 msgid "Deriving" msgstr "Виведення" #: src/SUMMARY.md msgid "Exercise: Generic Logger" msgstr "Вправа: Загальний логгер" #: src/SUMMARY.md msgid "Day 2: Afternoon" msgstr "День 2: Полудень" #: src/SUMMARY.md src/generics.md msgid "Generics" msgstr "Узагальнені типи" #: src/SUMMARY.md src/generics/generic-functions.md:5 msgid "Generic Functions" msgstr "Узагальнені функції" #: src/SUMMARY.md src/generics/generic-data.md:5 msgid "Generic Data Types" msgstr "Узагальнені типи даних" #: src/SUMMARY.md src/generics/generic-traits.md:5 msgid "Generic Traits" msgstr "Узагальнені трейти" #: src/SUMMARY.md src/generics/trait-bounds.md:5 msgid "Trait Bounds" msgstr "Обмеження трейту" #: src/SUMMARY.md src/generics/impl-trait.md:5 msgid "`impl Trait`" msgstr "`impl Trait`" #: src/SUMMARY.md src/generics/dyn-trait.md:5 msgid "`dyn Trait`" msgstr "`dyn Trait`" #: src/SUMMARY.md src/generics/exercise.md:5 msgid "Exercise: Generic `min`" msgstr "Вправа: узагальнена `min`" #: src/SUMMARY.md src/std-types.md msgid "Standard Library Types" msgstr "Типи стандартної бібліотеки" #: src/SUMMARY.md src/std-types/std.md:5 msgid "Standard Library" msgstr "Стандартна бібліотека" #: src/SUMMARY.md src/std-types/docs.md:5 msgid "Documentation" msgstr "Документація" #: src/SUMMARY.md msgid "`Option`" msgstr "`Option`" #: src/SUMMARY.md src/error-handling/result.md:5 msgid "`Result`" msgstr "`Result`" #: src/SUMMARY.md src/android/aidl/types/primitives.md:14 #: src/android/interoperability/cpp/type-mapping.md:5 msgid "`String`" msgstr "`String`" #: src/SUMMARY.md src/std-types/vec.md:5 msgid "`Vec`" msgstr "`Vec`" #: src/SUMMARY.md src/std-types/hashmap.md:5 src/bare-metal/no_std.md msgid "`HashMap`" msgstr "`HashMap`" #: src/SUMMARY.md src/std-types/exercise.md:5 msgid "Exercise: Counter" msgstr "Вправа: Лічильник" #: src/SUMMARY.md src/std-traits.md msgid "Standard Library Traits" msgstr "Трейти стандартної бібліотеки" #: src/SUMMARY.md src/std-traits/comparisons.md:5 #: src/concurrency/welcome-async.md msgid "Comparisons" msgstr "Порівняння" #: src/SUMMARY.md src/std-traits/operators.md:5 msgid "Operators" msgstr "Оператори" #: src/SUMMARY.md src/std-traits/from-and-into.md:5 msgid "`From` and `Into`" msgstr "`From` та `Into`" #: src/SUMMARY.md src/std-traits/casting.md:5 msgid "Casting" msgstr "Приведення" #: src/SUMMARY.md src/std-traits/read-and-write.md:5 msgid "`Read` and `Write`" msgstr "`Read` та `Write`" #: src/SUMMARY.md msgid "`Default`, struct update syntax" msgstr "`Default`, синтаксис оновлення структури" #: src/SUMMARY.md src/std-traits/closures.md:5 msgid "Closures" msgstr "Закриття" #: src/SUMMARY.md src/std-traits/exercise.md:5 msgid "Exercise: ROT13" msgstr "Вправа: ROT13" #: src/SUMMARY.md msgid "Day 3: Morning" msgstr "День 3: Ранок" #: src/SUMMARY.md src/memory-management.md msgid "Memory Management" msgstr "Управління пам'яттю" #: src/SUMMARY.md src/memory-management/review.md:5 msgid "Review of Program Memory" msgstr "Огляд пам'яті програми" #: src/SUMMARY.md src/memory-management/approaches.md:5 msgid "Approaches to Memory Management" msgstr "Підходи до управління пам'яттю" #: src/SUMMARY.md src/memory-management/ownership.md:5 msgid "Ownership" msgstr "Володіння" #: src/SUMMARY.md src/memory-management/move.md:5 msgid "Move Semantics" msgstr "Семантика переміщення" #: src/SUMMARY.md msgid "`Clone`" msgstr "`Clone`" #: src/SUMMARY.md src/memory-management/copy-types.md:5 msgid "Copy Types" msgstr "Типи які копіюються" #: src/SUMMARY.md msgid "`Drop`" msgstr "`Drop`" #: src/SUMMARY.md src/memory-management/exercise.md:5 msgid "Exercise: Builder Type" msgstr "Вправа: Тип будівельника" #: src/SUMMARY.md src/smart-pointers.md msgid "Smart Pointers" msgstr "Розумні вказівники" #: src/SUMMARY.md src/smart-pointers/box.md:5 #: src/android/interoperability/cpp/type-mapping.md:9 msgid "`Box`" msgstr "`Box`" #: src/SUMMARY.md src/smart-pointers/rc.md:5 msgid "`Rc`" msgstr "`Rc`" #: src/SUMMARY.md src/smart-pointers/trait-objects.md:5 msgid "Owned Trait Objects" msgstr "Принадлежні об'єкти трейтів" #: src/SUMMARY.md src/smart-pointers/exercise.md:5 msgid "Exercise: Binary Tree" msgstr "Вправа: Бінарне дерево" #: src/SUMMARY.md msgid "Day 3: Afternoon" msgstr "День 3: Полудень" #: src/SUMMARY.md src/borrowing.md msgid "Borrowing" msgstr "Запозичення" #: src/SUMMARY.md src/borrowing/shared.md:5 msgid "Borrowing a Value" msgstr "Запозичення значення" #: src/SUMMARY.md src/borrowing/borrowck.md:5 msgid "Borrow Checking" msgstr "Перевірка запозичення" #: src/SUMMARY.md src/borrowing/examples.md:5 msgid "Borrow Errors" msgstr "Помилки запозичення" #: src/SUMMARY.md src/borrowing/interior-mutability.md:5 msgid "Interior Mutability" msgstr "Внутрішня мутабельність" #: src/SUMMARY.md src/borrowing/exercise.md:5 msgid "Exercise: Health Statistics" msgstr "Вправа: Статистика здоров’я" #: src/SUMMARY.md src/lifetimes.md msgid "Lifetimes" msgstr "Тривалість життя" #: src/SUMMARY.md src/lifetimes/lifetime-annotations.md:5 msgid "Lifetime Annotations" msgstr "Анотації тривалісті життя" #: src/SUMMARY.md msgid "Lifetime Elision" msgstr "Упущення тривалісті життя" #: src/SUMMARY.md msgid "Struct Lifetimes" msgstr "Тривалість життя структур" #: src/SUMMARY.md src/lifetimes/exercise.md:5 msgid "Exercise: Protobuf Parsing" msgstr "Вправа: Розбір Protobuf" #: src/SUMMARY.md msgid "Day 4: Morning" msgstr "День 4: Ранок" #: src/SUMMARY.md src/iterators.md msgid "Iterators" msgstr "Ітератори" #: src/SUMMARY.md src/iterators/iterator.md:5 src/bare-metal/no_std.md msgid "`Iterator`" msgstr "`Ітератор`" #: src/SUMMARY.md src/iterators/intoiterator.md:5 msgid "`IntoIterator`" msgstr "`IntoIterator`" #: src/SUMMARY.md msgid "`FromIterator`" msgstr "`FromIterator`" #: src/SUMMARY.md src/iterators/exercise.md:5 msgid "Exercise: Iterator Method Chaining" msgstr "Вправа: ланцюжок методів ітератора" #: src/SUMMARY.md src/modules.md src/modules/modules.md:5 msgid "Modules" msgstr "Модулі" #: src/SUMMARY.md src/modules/filesystem.md:5 msgid "Filesystem Hierarchy" msgstr "Ієрархія файлової системи" #: src/SUMMARY.md src/modules/visibility.md:5 msgid "Visibility" msgstr "Видимість" #: src/SUMMARY.md msgid "`use`, `super`, `self`" msgstr "`use`, `super`, `self`" #: src/SUMMARY.md src/modules/exercise.md:5 msgid "Exercise: Modules for a GUI Library" msgstr "Вправа: Модулі для бібліотеки графічного інтерфейсу користувача" #: src/SUMMARY.md src/testing.md src/chromium/testing.md msgid "Testing" msgstr "Тестування" #: src/SUMMARY.md msgid "Test Modules" msgstr "Тестові модулі" #: src/SUMMARY.md src/testing/other.md:5 msgid "Other Types of Tests" msgstr "Інші типи тестів" #: src/SUMMARY.md src/testing/lints.md:5 msgid "Compiler Lints and Clippy" msgstr "Лінти компілятора та Clippy" #: src/SUMMARY.md src/testing/exercise.md:5 msgid "Exercise: Luhn Algorithm" msgstr "Вправа: Алгоритм Луна" #: src/SUMMARY.md msgid "Day 4: Afternoon" msgstr "День 4: Полудень" #: src/SUMMARY.md src/error-handling.md msgid "Error Handling" msgstr "Обробка помилок" #: src/SUMMARY.md src/error-handling/panics.md:5 msgid "Panics" msgstr "Паніки" #: src/SUMMARY.md src/error-handling/try.md:5 msgid "Try Operator" msgstr "Оператор спроб" #: src/SUMMARY.md src/error-handling/try-conversions.md:5 msgid "Try Conversions" msgstr "Перетворення спроб" #: src/SUMMARY.md msgid "`Error` Trait" msgstr "`Error` трейт" #: src/SUMMARY.md src/error-handling/thiserror-and-anyhow.md:5 msgid "`thiserror` and `anyhow`" msgstr "`thiserror` та `anyhow`" #: src/SUMMARY.md msgid "Exercise: Rewriting with `Result`" msgstr "Вправа: Переписування с `Result`" #: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/unsafe.md:5 msgid "Unsafe Rust" msgstr "Небезпечний Rust" #: src/SUMMARY.md msgid "Unsafe" msgstr "Unsafe" #: src/SUMMARY.md src/unsafe-rust/dereferencing.md:5 msgid "Dereferencing Raw Pointers" msgstr "Розіменування \"сирих\" вказівників" #: src/SUMMARY.md src/unsafe-rust/mutable-static.md:5 msgid "Mutable Static Variables" msgstr "Несталі статичні змінні" #: src/SUMMARY.md src/unsafe-rust/unions.md:5 msgid "Unions" msgstr "Об'єднання" #: src/SUMMARY.md src/unsafe-rust/unsafe-functions.md:5 msgid "Unsafe Functions" msgstr "Небезпечні функції" #: src/SUMMARY.md msgid "Unsafe Traits" msgstr "Небезпечні трейти" #: src/SUMMARY.md msgid "Exercise: FFI Wrapper" msgstr "Вправа: обгортка FFI" #: src/SUMMARY.md src/bare-metal/android.md msgid "Android" msgstr "Android" #: src/SUMMARY.md src/android/setup.md src/chromium/setup.md msgid "Setup" msgstr "Установка" #: src/SUMMARY.md src/android/build-rules.md msgid "Build Rules" msgstr "Правила побудови" #: src/SUMMARY.md msgid "Binary" msgstr "Бінарний файл" #: src/SUMMARY.md msgid "Library" msgstr "Бібліотека" #: src/SUMMARY.md src/android/aidl.md msgid "AIDL" msgstr "AIDL" #: src/SUMMARY.md src/android/aidl/birthday-service.md:1 msgid "Birthday Service Tutorial" msgstr "Посібник із сервісу Birthday" #: src/SUMMARY.md msgid "Interface" msgstr "Інтерфейс" #: src/SUMMARY.md msgid "Service API" msgstr "API сервісу" #: src/SUMMARY.md msgid "Service" msgstr "Сервіс" #: src/SUMMARY.md msgid "Server" msgstr "Сервер" #: src/SUMMARY.md src/android/aidl/example-service/deploy.md:1 msgid "Deploy" msgstr "Розгортка" #: src/SUMMARY.md msgid "Client" msgstr "Кліент" #: src/SUMMARY.md src/android/aidl/example-service/changing-definition.md:1 msgid "Changing API" msgstr "Зміна API" #: src/SUMMARY.md msgid "Updating Implementations" msgstr "Оновлення реалізацій" #: src/SUMMARY.md msgid "AIDL Types" msgstr "AIDL типи" #: src/SUMMARY.md src/android/aidl/types/primitives.md:1 msgid "Primitive Types" msgstr "Примітивні типи" #: src/SUMMARY.md src/android/aidl/types/arrays.md:1 msgid "Array Types" msgstr "Типи Масивів" #: src/SUMMARY.md src/android/aidl/types/objects.md:1 msgid "Sending Objects" msgstr "Надсилання об'єктів" #: src/SUMMARY.md src/android/aidl/types/parcelables.md:1 msgid "Parcelables" msgstr "Посилкові данні" #: src/SUMMARY.md src/android/aidl/types/file-descriptor.md:1 msgid "Sending Files" msgstr "Надсилання файлів" #: src/SUMMARY.md src/android/testing/googletest.md:5 msgid "GoogleTest" msgstr "GoogleTest" #: src/SUMMARY.md src/android/testing/mocking.md:5 msgid "Mocking" msgstr "Mocking" #: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md:1 msgid "Logging" msgstr "Журналювання" #: src/SUMMARY.md src/android/interoperability.md msgid "Interoperability" msgstr "Інтероперабельність" #: src/SUMMARY.md msgid "With C" msgstr "З С" #: src/SUMMARY.md msgid "Calling C with Bindgen" msgstr "Виклик С за допомогою Bindgen" #: src/SUMMARY.md msgid "Calling Rust from C" msgstr "Виклик Rust з C" #: src/SUMMARY.md src/android/interoperability/cpp.md:1 msgid "With C++" msgstr "З С++" #: src/SUMMARY.md src/android/interoperability/cpp/bridge.md:1 msgid "The Bridge Module" msgstr "Модуль Bridge" #: src/SUMMARY.md msgid "Rust Bridge" msgstr "Rust Bridge" #: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md:1 msgid "Generated C++" msgstr "Згенерований C++" #: src/SUMMARY.md msgid "C++ Bridge" msgstr "C++ Bridge" #: src/SUMMARY.md src/android/interoperability/cpp/shared-types.md:1 msgid "Shared Types" msgstr "Спільні типи" #: src/SUMMARY.md src/android/interoperability/cpp/shared-enums.md:1 msgid "Shared Enums" msgstr "Спільні переліки" #: src/SUMMARY.md src/android/interoperability/cpp/rust-result.md:1 msgid "Rust Error Handling" msgstr "Обробка помилок в Rust" #: src/SUMMARY.md src/android/interoperability/cpp/cpp-exception.md:1 msgid "C++ Error Handling" msgstr "Обробка помилок в C++" #: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md:1 msgid "Additional Types" msgstr "Додаткові типи" #: src/SUMMARY.md msgid "Building for Android: C++" msgstr "Збірка для Android: C++" #: src/SUMMARY.md msgid "Building for Android: Genrules" msgstr "Збірка для Android: Genrules" #: src/SUMMARY.md msgid "Building for Android: Rust" msgstr "Збірка для Android: Rust" #: src/SUMMARY.md msgid "With Java" msgstr "З Java" #: src/SUMMARY.md src/exercises/android/morning.md #: src/exercises/bare-metal/morning.md src/exercises/bare-metal/afternoon.md #: src/concurrency/sync-exercises.md src/concurrency/async-exercises.md msgid "Exercises" msgstr "Вправи" #: src/SUMMARY.md msgid "Chromium" msgstr "Chromium" #: src/SUMMARY.md src/chromium/cargo.md msgid "Comparing Chromium and Cargo Ecosystems" msgstr "Порівняння екосистем Chromium і Cargo" #: src/SUMMARY.md msgid "Policy" msgstr "Політика" #: src/SUMMARY.md msgid "Unsafe Code" msgstr "Небезпечний код" #: src/SUMMARY.md src/chromium/build-rules/depending.md:1 msgid "Depending on Rust Code from Chromium C++" msgstr "Залежнісь Chromium C++ від коду Rust" #: src/SUMMARY.md src/chromium/build-rules/vscode.md:1 msgid "Visual Studio Code" msgstr "Visual Studio Code" #: src/SUMMARY.md src/exercises/chromium/third-party.md:1 msgid "Exercise" msgstr "Вправа" #: src/SUMMARY.md src/chromium/testing/rust-gtest-interop.md:1 msgid "`rust_gtest_interop` Library" msgstr "Бібліотека `rust_gtest_interop`" #: src/SUMMARY.md src/chromium/testing/build-gn.md:1 msgid "GN Rules for Rust Tests" msgstr "Правила GN для тестів Rust" #: src/SUMMARY.md src/chromium/testing/chromium-import-macro.md:1 msgid "`chromium::import!` Macro" msgstr "Макрос `chromium::import!`" #: src/SUMMARY.md src/chromium/interoperability-with-cpp.md msgid "Interoperability with C++" msgstr "Взаємодія з C++" #: src/SUMMARY.md src/chromium/interoperability-with-cpp/example-bindings.md:1 msgid "Example Bindings" msgstr "Приклади прив'язок" #: src/SUMMARY.md #: src/chromium/interoperability-with-cpp/limitations-of-cxx.md:1 msgid "Limitations of CXX" msgstr "Обмеження CXX" #: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md:1 msgid "CXX Error Handling" msgstr "Обробка помилок в CXX" #: src/SUMMARY.md msgid "Error Handling: QR Example" msgstr "Обробка помилок: приклад QR" #: src/SUMMARY.md msgid "Error Handling: PNG Example" msgstr "Обробка помилок: приклад PNG" #: src/SUMMARY.md msgid "Using CXX in Chromium" msgstr "Використання CXX у Chromium" #: src/SUMMARY.md src/chromium/adding-third-party-crates.md msgid "Adding Third Party Crates" msgstr "Додавання крейтів третіх сторін" #: src/SUMMARY.md msgid "Configuring Cargo.toml" msgstr "Налаштування Cargo.toml" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md:1 msgid "Configuring `gnrt_config.toml`" msgstr "Налаштування `gnrt_config.toml`" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/downloading-crates.md:1 msgid "Downloading Crates" msgstr "Завантаження крейтів" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/generating-gn-build-rules.md:1 msgid "Generating `gn` Build Rules" msgstr "Створення правил побудови `gn`" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/resolving-problems.md:1 msgid "Resolving Problems" msgstr "Вирішення проблем" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md:1 msgid "Build Scripts Which Generate Code" msgstr "Скрипти збірки, які генерують код" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md:1 msgid "Build Scripts Which Build C++ or Take Arbitrary Actions" msgstr "Скрипти збірки, які будують C++ або виконують довільні дії" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/depending-on-a-crate.md:1 msgid "Depending on a Crate" msgstr "Залежнісь від крейта" #: src/SUMMARY.md msgid "Reviews and Audits" msgstr "Перевірки та аудити" #: src/SUMMARY.md msgid "Checking into Chromium Source Code" msgstr "Реєстрація в Chromium Source Code" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/keeping-up-to-date.md:1 msgid "Keeping Crates Up to Date" msgstr "Підтримання крейтів в актуальному стані" #: src/SUMMARY.md msgid "Bringing It Together - Exercise" msgstr "Зібрання усього разом - вправа" #: src/SUMMARY.md src/exercises/chromium/solutions.md msgid "Exercise Solutions" msgstr "Рішення вправ" #: src/SUMMARY.md msgid "Bare Metal: Morning" msgstr "Залізо: Ранок" #: src/SUMMARY.md src/bare-metal/no_std.md msgid "`no_std`" msgstr "`no_std`" #: src/SUMMARY.md msgid "A Minimal Example" msgstr "Мінімальний приклад" #: src/SUMMARY.md src/bare-metal/no_std.md src/bare-metal/alloc.md:1 msgid "`alloc`" msgstr "`alloc`" #: src/SUMMARY.md src/bare-metal/microcontrollers.md msgid "Microcontrollers" msgstr "Мікроконтролери" #: src/SUMMARY.md src/bare-metal/microcontrollers/mmio.md:1 msgid "Raw MMIO" msgstr "Сирий ввід вивід з відображеної пам'яті (MMIO)" #: src/SUMMARY.md msgid "PACs" msgstr "Крейти доступу до периферійних пристроїв (PACs)" #: src/SUMMARY.md msgid "HAL Crates" msgstr "Крейти абстракції обладнання (HAL)" #: src/SUMMARY.md msgid "Board Support Crates" msgstr "Крейти підтримки плат" #: src/SUMMARY.md msgid "The Type State Pattern" msgstr "Шаблон стану типу" #: src/SUMMARY.md src/bare-metal/microcontrollers/embedded-hal.md:1 msgid "`embedded-hal`" msgstr "`embedded-hal`" #: src/SUMMARY.md src/bare-metal/microcontrollers/probe-rs.md:1 msgid "`probe-rs` and `cargo-embed`" msgstr "`probe-rs` та `cargo-embed`" #: src/SUMMARY.md src/bare-metal/microcontrollers/debugging.md:1 msgid "Debugging" msgstr "Налагодження" #: src/SUMMARY.md msgid "Other Projects" msgstr "Інші проєкти" #: src/SUMMARY.md src/exercises/bare-metal/compass.md:1 #: src/exercises/bare-metal/solutions-morning.md:3 msgid "Compass" msgstr "Компас" #: src/SUMMARY.md src/concurrency/sync-exercises/solutions.md:5 #: src/concurrency/async-exercises/solutions.md:5 msgid "Solutions" msgstr "Рішення" #: src/SUMMARY.md msgid "Bare Metal: Afternoon" msgstr "Залізо: Полудень" #: src/SUMMARY.md msgid "Application Processors" msgstr "Прикладні процесори" #: src/SUMMARY.md src/bare-metal/aps/entry-point.md:1 msgid "Getting Ready to Rust" msgstr "Підготовка до Rust" #: src/SUMMARY.md msgid "Inline Assembly" msgstr "Вбудована збірка" #: src/SUMMARY.md msgid "MMIO" msgstr "Ввід вивід з відображеної пам'яті (MMIO)" #: src/SUMMARY.md msgid "Let's Write a UART Driver" msgstr "Давайте напишемо драйвер UART" #: src/SUMMARY.md msgid "More Traits" msgstr "Більше трейтів" #: src/SUMMARY.md msgid "A Better UART Driver" msgstr "Кращий драйвер UART" #: src/SUMMARY.md src/bare-metal/aps/better-uart/bitflags.md:1 msgid "Bitflags" msgstr "Бітові прапорці (крейт bitflags)" #: src/SUMMARY.md msgid "Multiple Registers" msgstr "Кілька регістрів" #: src/SUMMARY.md src/bare-metal/aps/better-uart/driver.md:1 msgid "Driver" msgstr "Драйвер" #: src/SUMMARY.md msgid "Using It" msgstr "Використання" #: src/SUMMARY.md src/error-handling/result.md:54 #: src/bare-metal/aps/exceptions.md:1 msgid "Exceptions" msgstr "Виключення" #: src/SUMMARY.md msgid "Useful Crates" msgstr "Корисні крейти" #: src/SUMMARY.md src/bare-metal/useful-crates/zerocopy.md:1 msgid "`zerocopy`" msgstr "`zerocopy`" #: src/SUMMARY.md src/bare-metal/useful-crates/aarch64-paging.md:1 msgid "`aarch64-paging`" msgstr "`aarch64-paging`" #: src/SUMMARY.md src/bare-metal/useful-crates/buddy_system_allocator.md:1 msgid "`buddy_system_allocator`" msgstr "`buddy_system_allocator`" #: src/SUMMARY.md src/bare-metal/useful-crates/tinyvec.md:1 msgid "`tinyvec`" msgstr "`tinyvec`" #: src/SUMMARY.md src/bare-metal/useful-crates/spin.md:1 msgid "`spin`" msgstr "`spin`" #: src/SUMMARY.md msgid "`vmbase`" msgstr "`vmbase`" #: src/SUMMARY.md msgid "RTC Driver" msgstr "Драйвер годинника реального часу (RTC)" #: src/SUMMARY.md msgid "Concurrency: Morning" msgstr "Одночасність виконання: Ранок" #: src/SUMMARY.md src/concurrency/threads.md msgid "Threads" msgstr "Потоки" #: src/SUMMARY.md src/concurrency/threads/plain.md:5 msgid "Plain Threads" msgstr "Звичайні потоки" #: src/SUMMARY.md src/concurrency/threads/scoped.md:5 msgid "Scoped Threads" msgstr "Потоки з областю видимості" #: src/SUMMARY.md src/concurrency/channels.md msgid "Channels" msgstr "Канали" #: src/SUMMARY.md src/concurrency/channels/senders-receivers.md:5 msgid "Senders and Receivers" msgstr "Відправники та отримувачі" #: src/SUMMARY.md src/concurrency/channels/unbounded.md:5 msgid "Unbounded Channels" msgstr "Незав'язані канали" #: src/SUMMARY.md src/concurrency/channels/bounded.md:5 msgid "Bounded Channels" msgstr "Зав'язані канали" #: src/SUMMARY.md src/concurrency/send-sync.md msgid "`Send` and `Sync`" msgstr "`Send` та `Sync`" #: src/SUMMARY.md src/concurrency/send-sync/marker-traits.md:5 msgid "Marker Traits" msgstr "Маркерні трейти" #: src/SUMMARY.md src/concurrency/send-sync/send.md:5 msgid "`Send`" msgstr "`Send`" #: src/SUMMARY.md src/concurrency/send-sync/sync.md:5 msgid "`Sync`" msgstr "`Sync`" #: src/SUMMARY.md src/concurrency/send-sync/examples.md:5 msgid "Examples" msgstr "Приклади" #: src/SUMMARY.md src/concurrency/shared-state.md msgid "Shared State" msgstr "Спільний стан" #: src/SUMMARY.md src/concurrency/shared-state/arc.md:5 msgid "`Arc`" msgstr "`Arc`" #: src/SUMMARY.md src/concurrency/shared-state/mutex.md:5 msgid "`Mutex`" msgstr "`Mutex`" #: src/SUMMARY.md src/memory-management/review.md:20 #: src/error-handling/try-conversions.md:27 #: src/concurrency/shared-state/example.md:5 msgid "Example" msgstr "Приклад" #: src/SUMMARY.md src/concurrency/sync-exercises/dining-philosophers.md:5 #: src/concurrency/sync-exercises/solutions.md:7 msgid "Dining Philosophers" msgstr "Вечеря філософів" #: src/SUMMARY.md src/concurrency/sync-exercises/link-checker.md:5 msgid "Multi-threaded Link Checker" msgstr "Перевірка багатопоточних посилань" #: src/SUMMARY.md msgid "Concurrency: Afternoon" msgstr "Одночасність виконання: Полудень" #: src/SUMMARY.md src/concurrency/async.md msgid "Async Basics" msgstr "Основи асинхронізації" #: src/SUMMARY.md src/concurrency/async/async-await.md:5 msgid "`async`/`await`" msgstr "`async`/`await`" #: src/SUMMARY.md src/concurrency/async/futures.md:5 msgid "Futures" msgstr "Futures" #: src/SUMMARY.md src/concurrency/async/runtimes.md:5 msgid "Runtimes" msgstr "Середовища виконання" #: src/SUMMARY.md src/concurrency/async/runtimes/tokio.md:1 msgid "Tokio" msgstr "Токіо" #: src/SUMMARY.md src/concurrency/sync-exercises/link-checker.md:123 #: src/concurrency/async/tasks.md:5 #: src/concurrency/async-exercises/chat-app.md:147 msgid "Tasks" msgstr "Завдання" #: src/SUMMARY.md src/concurrency/async-control-flow.md msgid "Channels and Control Flow" msgstr "Канали та потік управління" #: src/SUMMARY.md src/concurrency/async-control-flow/channels.md:5 msgid "Async Channels" msgstr "Асинхронні канали" #: src/SUMMARY.md src/concurrency/async-control-flow/join.md:5 msgid "Join" msgstr "Join" #: src/SUMMARY.md src/concurrency/async-control-flow/select.md:5 msgid "Select" msgstr "Select" #: src/SUMMARY.md src/concurrency/async-pitfalls.md msgid "Pitfalls" msgstr "Підводні камені" #: src/SUMMARY.md msgid "Blocking the Executor" msgstr "Блокування Виконавця" #: src/SUMMARY.md src/concurrency/async-pitfalls/pin.md:5 msgid "`Pin`" msgstr "`Pin`" #: src/SUMMARY.md src/concurrency/async-pitfalls/async-traits.md:5 msgid "Async Traits" msgstr "Асинхронні трейти" #: src/SUMMARY.md src/concurrency/async-pitfalls/cancellation.md:5 msgid "Cancellation" msgstr "Скасування" #: src/SUMMARY.md src/concurrency/async-exercises/chat-app.md:5 #: src/concurrency/async-exercises/solutions.md:106 msgid "Broadcast Chat Application" msgstr "Програма широкомовного чату" #: src/SUMMARY.md msgid "Final Words" msgstr "Заключні слова" #: src/SUMMARY.md src/thanks.md msgid "Thanks!" msgstr "Дякую!" #. Please keep { #glossary } untranslated. #: src/SUMMARY.md src/glossary.md msgid "Glossary" msgstr "Глосарій" #: src/SUMMARY.md msgid "Other Resources" msgstr "Інші ресурси" #: src/SUMMARY.md src/credits.md msgid "Credits" msgstr "Кредити" #: src/index.md 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 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 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 msgid "" "The course is available in other languages. Select your preferred language " "in the top right corner of the page or check the [Translations](running-the-" "course/translations.md) page for a list of all available translations." msgstr "" "Курс доступний на інших мовах. Виберіть потрібну мову у верхньому правому " "куті сторінки або перегляньте сторінку [Переклади](running-the-course/" "translations.md), щоб ознайомитися зі списком усіх доступних перекладів." #: src/index.md msgid "The course is also available [as a PDF](comprehensive-rust.pdf)." msgstr "Курс також доступний [у форматі PDF] (comprehensive-rust.pdf)." #: src/index.md 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 msgid "Give you a comprehensive understanding of the Rust syntax and language." msgstr "Дати вам повне уявлення про синтаксис та семантику мови Rust." #: src/index.md msgid "Enable you to modify existing programs and write new programs in Rust." msgstr "Навчити працювати з існуючим кодом та писати нові програми на Rust." #: src/index.md msgid "Show you common Rust idioms." msgstr "Показати розповсюджені ідіоми мови Rust." #: src/index.md msgid "We call the first four course days Rust Fundamentals." msgstr "Перші чотири дні курсу ми називаємо Rust Fundamentals." #: src/index.md msgid "" "Building on this, you're invited to dive into one or more specialized topics:" msgstr "" "Спираючись на це, вам пропонується зануритися в одну або кілька " "спеціалізованих тем:" #: src/index.md 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 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 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 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 msgid "Non-Goals" msgstr "За рамками курсу" #: src/index.md 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 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 msgid "Assumptions" msgstr "Припущення" #: src/index.md 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 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 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 src/running-the-course/course-structure.md:3 msgid "This page is for the course instructor." msgstr "Ця сторінка призначена для викладача курсу." #: src/running-the-course.md 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 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 msgid "Before you run the course, you will want to:" msgstr "Перед проведенням курсу бажано:" #: src/running-the-course.md 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 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 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 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 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 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 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 "{{%course outline Concurrency}}" msgstr "{{%course outline Concurrency}}" #: src/running-the-course/course-structure.md:75 msgid "Format" msgstr "Формат" #: src/running-the-course/course-structure.md:77 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: Navigate to the previous page." msgstr "Стрілка вліво: Перехід на попередню сторінку." #: src/running-the-course/keyboard-shortcuts.md:6 msgid "Arrow-Right: Navigate to the next page." msgstr "Стрілка вправо: Перехід до наступної сторінки." #: src/running-the-course/keyboard-shortcuts.md:7 msgid "Ctrl + Enter: Execute the code sample that has focus." msgstr "" "Ctrl + Enter: Виконати приклад коду, який знаходиться у фокусі." #: src/running-the-course/keyboard-shortcuts.md:8 msgid "s: Activate the search bar." msgstr "s: Активувати панель пошуку." #: 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:8 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:10 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:12 msgid "" "[Korean](https://google.github.io/comprehensive-rust/ko/) by [@keispace]" "(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp), " "[@jooyunghan](https://github.com/jooyunghan), and [@namhyung](https://github." "com/namhyung)." msgstr "" "[Корейска](https://google.github.io/comprehensive-rust/ko/) від [@keispace]" "(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp), " "[@jooyunghan](https://github.com/jooyunghan) та [@namhyung](https://github." "com/namhyung)." #: src/running-the-course/translations.md:13 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:15 msgid "" "Use the language picker in the top-right corner to switch between languages." msgstr "" "Використовуйте кнопку вибору мови у верхньому правому куті для перемикання " "між мовами." #: src/running-the-course/translations.md:17 msgid "Incomplete Translations" msgstr "Незавершені переклади" #: src/running-the-course/translations.md:19 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:22 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:23 msgid "" "[French](https://google.github.io/comprehensive-rust/fr/) by [@KookaS]" "(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) and " "[@AdrienBaudemont](https://github.com/AdrienBaudemont)." msgstr "" "[Французька](https://google.github.io/comprehensive-rust/fr/) від [@KookaS]" "(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) і " "[@AdrienBaudemont](https://github.com/AdrienBaudemont)." #: src/running-the-course/translations.md:24 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:25 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:26 msgid "" "[Italian](https://google.github.io/comprehensive-rust/it/) by " "[@henrythebuilder](https://github.com/henrythebuilder) and [@detro](https://" "github.com/detro)." msgstr "" "[Італійська](https://google.github.io/comprehensive-rust/it/) від " "[@henrythebuilder](https://github.com/henrythebuilder) і [@detro](https://" "github.com/detro)." #: src/running-the-course/translations.md:28 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 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 msgid "Installation" msgstr "Встановлення" #: src/cargo.md msgid "**Please follow the instructions on .**" msgstr "**Дотримуйтесь інструкцій на .**" #: src/cargo.md 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 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 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/types-and-values/hello-world.md:29 #: src/references/exclusive.md:23 src/memory-management/move.md:156 #: src/error-handling/try.md:56 src/android/setup.md #: src/concurrency/async/async-await.md:29 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:35 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:38 msgid "" "The editions are allowed to make backwards incompatible changes to the " "language." msgstr "Редакціям дозволено вносити зворотно-несумісні зміни до мови." #: src/cargo/rust-ecosystem.md:41 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:44 msgid "" "To avoid splitting the ecosystem, Rust compilers can mix code written for " "different editions." msgstr "" "Щоб уникнути поділу екосистеми, компілятор Rust може змішувати код, " "написаний для різних редакцій." #: src/cargo/rust-ecosystem.md:47 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:50 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:53 msgid "Project/package structure" msgstr "Структуру проекту/пакета" #: src/cargo/rust-ecosystem.md:54 msgid "[workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html)" msgstr "" "[робочі області](https://doc.rust-lang.org/cargo/reference/workspaces.html)" #: src/cargo/rust-ecosystem.md:55 msgid "Dev Dependencies and Runtime Dependency management/caching" msgstr "" "Управління/кешування залежностями для розробки (dev) та часу виконання " "(runtime)" #: src/cargo/rust-ecosystem.md:56 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:57 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:58 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:60 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:46 msgid "\"Edit me!\"" msgstr "\"Відредагуте мене!\"" #: src/cargo/code-samples.md:19 msgid "" "You can use Ctrl + Enter to execute the code when focus is in the " "text box." msgstr "" "Ви можете використовувати Ctrl + Enter для виконання коду, коли " "фокус введення знаходиться в текстовому полі." #: 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 "" "Вбудований у сторінку редактор коду не може запускати модульні тести. " "Скопіюйте код і відкрийте його в справжньому 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:16 msgid "" "You can use any later version too since Rust maintains backwards " "compatibility." msgstr "" "Ви також можете використовувати будь-яку пізнішу версію, оскільки Rust " "підтримує зворотну сумісність." #: src/cargo/running-locally.md:18 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:21 msgid "Click the \"Copy to clipboard\" button on the example you want to copy." msgstr "" "Натисніть кнопку \"Copy to clipboard\" на прикладі коду, який потрібно " "скопіювати." #: src/cargo/running-locally.md:23 msgid "" "Use `cargo new exercise` to create a new `exercise/` directory for your code:" msgstr "" "Використовуйте `cargo new exercise`, щоб створити нову директорію `exercise/" "` для вашого коду:" #: src/cargo/running-locally.md:30 msgid "" "Navigate into `exercise/` and use `cargo run` to build and run your binary:" msgstr "" "Перейдіть в директорію `exercise/` і виконайте `cargo run` для побудови та " "запуску виконуваного файлу:" #: src/cargo/running-locally.md:41 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:50 msgid "Use `cargo run` to build and run your updated binary:" msgstr "" "Використовуйте `cargo run` для побудови та запуску оновленого виконуваного " "файлу:" #: src/cargo/running-locally.md:60 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:65 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:73 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 msgid "" "minutes: 5 course: Fundamentals session: Day 1 Morning target_minutes: 180" msgstr "" "minutes: 5 course: Fundamentals session: Day 1 Morning target_minutes: 180" #: src/welcome-day-1.md msgid "Welcome to Day 1" msgstr "Ласкаво просимо до Дня 1" #: src/welcome-day-1.md 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 msgid "" "Basic Rust syntax: variables, scalar and compound types, enums, structs, " "references, functions, and methods." msgstr "" "Базовий синтаксис Rust: змінні, скалярні та складені типи, переліки, " "структури, посилання, функції та методи." #: src/welcome-day-1.md msgid "Types and type inference." msgstr "Типи та виведення типів." #: src/welcome-day-1.md msgid "Control flow constructs: loops, conditionals, and so on." msgstr "Конструкції потоку управління: цикли, умовні переходи і так далі." #: src/welcome-day-1.md msgid "User-defined types: structs and enums." msgstr "Типи, визначені користувачем: структури та переліки." #: src/welcome-day-1.md msgid "Pattern matching: destructuring enums, structs, and arrays." msgstr "Зіставлення шаблонів: деструктуризація переліків, структур і масивів." #: src/welcome-day-1.md src/welcome-day-2.md src/welcome-day-3.md #: src/welcome-day-4.md src/concurrency/welcome.md #: src/concurrency/welcome-async.md msgid "Schedule" msgstr "Розклад" #: src/welcome-day-1.md src/welcome-day-1-afternoon.md src/welcome-day-2.md #: src/welcome-day-2-afternoon.md src/welcome-day-3.md #: src/welcome-day-3-afternoon.md src/welcome-day-4.md #: src/welcome-day-4-afternoon.md src/concurrency/welcome.md #: src/concurrency/welcome-async.md msgid "{{%session outline}}" msgstr "" #: src/welcome-day-1.md msgid "Please remind the students that:" msgstr "Будь ласка, нагадайте учням, що:" #: src/welcome-day-1.md msgid "" "They should ask questions when they get them, don't save them to the end." msgstr "" "Вони повинні задавати питання, коли вони їх мають, а не зберігати їх до " "кінця." #: src/welcome-day-1.md msgid "" "The class is meant to be interactive and discussions are very much " "encouraged!" msgstr "Клас має на меті бути інтерактивним, тому дискусії дуже заохочуються!" #: src/welcome-day-1.md 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 msgid "" "The questions will likely mean that we talk about things ahead of the slides." msgstr "" "Запитання, швидше за все, означатимуть, що ми обговорюємо речі, які " "випереджають слайди." #: src/welcome-day-1.md 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 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 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 src/types-and-values.md src/control-flow-basics.md #: src/tuples-and-arrays.md src/references.md src/user-defined-types.md #: src/pattern-matching.md src/methods-and-traits.md src/generics.md #: src/std-types.md src/std-traits.md src/memory-management.md #: src/smart-pointers.md src/borrowing.md src/lifetimes.md src/iterators.md #: src/modules.md src/testing.md src/error-handling.md src/unsafe-rust.md #: src/concurrency/threads.md src/concurrency/channels.md #: src/concurrency/send-sync.md src/concurrency/shared-state.md #: src/concurrency/sync-exercises.md src/concurrency/async.md #: src/concurrency/async-control-flow.md src/concurrency/async-pitfalls.md #: src/concurrency/async-exercises.md msgid "{{%segment outline}}" msgstr "{{%segment outline}}" #: src/hello-world/what-is-rust.md:2 src/references/shared.md:2 #: src/references/exclusive.md:2 src/references/slices.md:2 #: src/references/strings.md:2 src/user-defined-types/named-structs.md:2 #: src/user-defined-types/tuple-structs.md:2 src/pattern-matching/match.md:2 #: src/pattern-matching/let-control-flow.md:2 src/generics/generic-data.md:2 #: src/generics/exercise.md:2 src/std-types/option.md:2 #: src/std-traits/closures.md:2 src/memory-management/approaches.md:2 #: src/smart-pointers/trait-objects.md:2 src/borrowing/shared.md:2 #: src/borrowing/borrowck.md:2 src/borrowing/interior-mutability.md:2 #: src/lifetimes/lifetime-annotations.md:2 src/unsafe-rust/dereferencing.md:2 #: src/concurrency/async/runtimes.md:2 #: src/concurrency/async-pitfalls/blocking-executor.md:2 msgid "minutes: 10" msgstr "хвилин: 10" #: src/hello-world/what-is-rust.md:7 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:9 msgid "Rust is a statically compiled language in a similar role as C++" msgstr "" "Rust — це статично скомпільована мова, яка виконує таку саму роль, як C++" #: src/hello-world/what-is-rust.md:10 msgid "`rustc` uses LLVM as its backend." msgstr "`rustc` використовує LLVM як бекенд." #: src/hello-world/what-is-rust.md:11 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:13 msgid "x86, ARM, WebAssembly, ..." msgstr "x86, ARM, WebAssembly, ..." #: src/hello-world/what-is-rust.md:14 msgid "Linux, Mac, Windows, ..." msgstr "Linux, Mac, Windows, ..." #: src/hello-world/what-is-rust.md:15 msgid "Rust is used for a wide range of devices:" msgstr "Rust використовується для широкого спектру пристроїв:" #: src/hello-world/what-is-rust.md:16 msgid "firmware and boot loaders," msgstr "прошивки та завантажувачі," #: src/hello-world/what-is-rust.md:17 msgid "smart displays," msgstr "розумні дисплеї," #: src/hello-world/what-is-rust.md:18 msgid "mobile phones," msgstr "мобільні телефони," #: src/hello-world/what-is-rust.md:19 msgid "desktops," msgstr "робочі станції," #: src/hello-world/what-is-rust.md:20 msgid "servers." msgstr "сервери." #: src/hello-world/what-is-rust.md:24 msgid "Rust fits in the same area as C++:" msgstr "Rust вписується в ту ж саму область, що й C++:" #: src/hello-world/what-is-rust.md:26 msgid "High flexibility." msgstr "Висока гнучкість." #: src/hello-world/what-is-rust.md:27 msgid "High level of control." msgstr "Високий рівень контролю." #: src/hello-world/what-is-rust.md:28 msgid "" "Can be scaled down to very constrained devices such as microcontrollers." msgstr "" "Може бути зменьшений до дуже обмежених пристроїв, таких як мікроконтролери." #: src/hello-world/what-is-rust.md:29 msgid "Has no runtime or garbage collection." msgstr "Не має часу виконання або збирання сміття." #: src/hello-world/what-is-rust.md:30 msgid "Focuses on reliability and safety without sacrificing performance." msgstr "Зосереджений на надійності та безпеці без шкоди для продуктивності." #: src/hello-world/benefits.md:2 src/types-and-values/arithmetic.md:2 #: src/types-and-values/inference.md:2 src/control-flow-basics/functions.md:2 #: src/tuples-and-arrays/iteration.md:2 src/methods-and-traits/deriving.md:2 #: src/std-types/std.md:2 src/borrowing/examples.md:2 src/modules/modules.md:2 #: src/testing/lints.md:2 src/error-handling/panics.md:2 msgid "minutes: 3" msgstr "хвилин: 3" #: src/hello-world/benefits.md:7 msgid "Some unique selling points of Rust:" msgstr "Деякі унікальні переваги Rust:" #: src/hello-world/benefits.md:9 msgid "" "_Compile time memory safety_ - whole classes of memory bugs are prevented at " "compile time" msgstr "" "_Безпека пам'яті під час компіляції_ - цілі класи помилок пам'яті " "запобігаються на етапі компіляції" #: src/hello-world/benefits.md:11 msgid "No uninitialized variables." msgstr "Немає неініціалізованих змінних." #: src/hello-world/benefits.md:12 msgid "No double-frees." msgstr "Ніяких подвійних звільнень." #: src/hello-world/benefits.md:13 msgid "No use-after-free." msgstr "Немає використання після звільнення." #: src/hello-world/benefits.md:14 msgid "No `NULL` pointers." msgstr "Немає вказівників `NULL`." #: src/hello-world/benefits.md:15 msgid "No forgotten locked mutexes." msgstr "Немає забутих заблокованих м'ютексів." #: src/hello-world/benefits.md:16 msgid "No data races between threads." msgstr "Немає перегонів даних між потоками." #: src/hello-world/benefits.md:17 msgid "No iterator invalidation." msgstr "Немає недійсності ітератора." #: src/hello-world/benefits.md:19 msgid "" "_No undefined runtime behavior_ - what a Rust statement does is never left " "unspecified" msgstr "" "_Ніякої невизначеної поведінки під час виконання_ - те, що робить оператор " "Rust, ніколи не залишається невизначеним" #: src/hello-world/benefits.md:21 msgid "Array access is bounds checked." msgstr "Доступ до масиву перевірено на межі." #: src/hello-world/benefits.md:22 msgid "Integer overflow is defined (panic or wrap-around)." msgstr "" "Поведінка цілочисельного переповнення визначена (паніка або обертання)." #: src/hello-world/benefits.md:24 msgid "" "_Modern language features_ - as expressive and ergonomic as higher-level " "languages" msgstr "" "_Можливості сучасної мови_ - така ж виразна та ергономічна, як і мови вищих " "рівнів" #: src/hello-world/benefits.md:26 msgid "Enums and pattern matching." msgstr "Переліки та зіставлення шаблонів." #: src/hello-world/benefits.md:27 msgid "Generics." msgstr "Узагальнені типи." #: src/hello-world/benefits.md:28 msgid "No overhead FFI." msgstr "FFI без накладних витрат." #: src/hello-world/benefits.md:29 msgid "Zero-cost abstractions." msgstr "Абстракції без витрат." #: src/hello-world/benefits.md:30 msgid "Great compiler errors." msgstr "Чудово деталізовані помилки компілятора." #: src/hello-world/benefits.md:31 msgid "Built-in dependency manager." msgstr "Вбудований менеджер залежностей." #: src/hello-world/benefits.md:32 msgid "Built-in support for testing." msgstr "Вбудована підтримка тестування." #: src/hello-world/benefits.md:33 msgid "Excellent Language Server Protocol support." msgstr "Чудова підтримка протоколу мовного сервера (LSP)." #: src/hello-world/benefits.md:37 msgid "" "Do not spend much time here. All of these points will be covered in more " "depth later." msgstr "" "Не витрачайте тут багато часу. Всі ці пункти будуть розглянуті більш " "детально пізніше." #: src/hello-world/benefits.md:40 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:43 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:48 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:2 src/control-flow-basics/macros.md:2 #: src/user-defined-types/aliases.md:2 src/memory-management/clone.md:2 #: src/concurrency/channels/unbounded.md:2 #: src/concurrency/send-sync/marker-traits.md:2 #: src/concurrency/send-sync/send.md:2 src/concurrency/send-sync/sync.md:2 msgid "minutes: 2" msgstr "хвилин: 2" #: src/hello-world/playground.md:7 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:12 msgid "" "Under \"Tools\", use the `rustfmt` option to format your code in the " "\"standard\" way." msgstr "" "У розділі \"Інструменти\" скористайтеся опцією `rustfmt` для форматування " "вашого коду у \"стандартний\" спосіб." #: src/hello-world/playground.md:15 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:19 msgid "" "If you're interested, use \"ASM\" under \"...\" to see the generated " "assembly code." msgstr "" "Якщо вам цікаво, скористайтеся командою \"ASM\" в \"...\", щоб переглянути " "згенерований асемблерний код." #: src/hello-world/playground.md:24 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 optimizations or generated " "assembly." msgstr "" "Коли студенти підуть на перерву, заохотьте їх відкрити майданчик і трохи " "поекспериментувати. Заохочуйте їх залишати вкладку відкритою і пробувати " "щось протягом решти курсу. Це особливо корисно для досвідчених студентів, " "які хочуть дізнатися більше про оптимізацію Rust або згенеровану збірку." #: src/types-and-values/hello-world.md:2 src/types-and-values/variables.md:2 #: src/types-and-values/values.md:2 src/control-flow-basics/loops.md:2 #: src/control-flow-basics/blocks-and-scopes.md:2 #: src/tuples-and-arrays/arrays.md:2 src/tuples-and-arrays/tuples.md:2 #: src/tuples-and-arrays/destructuring.md:2 src/user-defined-types/enums.md:2 #: src/user-defined-types/static.md:2 src/generics/generic-functions.md:2 #: src/generics/impl-trait.md:2 src/generics/dyn-trait.md:2 #: src/std-types/docs.md:2 src/std-types/result.md:2 src/std-types/string.md:2 #: src/std-types/vec.md:2 src/std-types/hashmap.md:2 #: src/std-traits/comparisons.md:2 src/std-traits/operators.md:2 #: src/std-traits/from-and-into.md:2 src/std-traits/casting.md:2 #: src/std-traits/read-and-write.md:2 src/std-traits/default.md:2 #: src/memory-management/review.md:2 src/memory-management/ownership.md:2 #: src/memory-management/move.md:2 src/memory-management/copy-types.md:2 #: src/smart-pointers/rc.md:2 src/lifetimes/lifetime-elision.md:2 #: src/lifetimes/struct-lifetimes.md:2 src/iterators/iterator.md:2 #: src/iterators/intoiterator.md:2 src/iterators/fromiterator.md:2 #: src/modules/filesystem.md:2 src/modules/visibility.md:2 #: src/testing/unit-tests.md:2 src/testing/other.md:2 #: src/error-handling/result.md:2 src/error-handling/try.md:2 #: src/error-handling/try-conversions.md:2 src/error-handling/error.md:2 #: src/error-handling/thiserror-and-anyhow.md:2 src/unsafe-rust/unsafe.md:2 #: src/unsafe-rust/mutable-static.md:2 src/unsafe-rust/unions.md:2 #: src/unsafe-rust/unsafe-functions.md:2 src/unsafe-rust/unsafe-traits.md:2 #: src/android/testing/googletest.md:2 src/android/testing/mocking.md:2 #: src/concurrency/shared-state/arc.md:2 #: src/concurrency/async-control-flow/select.md:2 #: src/concurrency/async-pitfalls/async-traits.md:2 msgid "minutes: 5" msgstr "хвилин: 5" #: src/types-and-values/hello-world.md:7 msgid "" "Let us jump into the simplest possible Rust program, a classic Hello World " "program:" msgstr "" "Перейдемо до найпростішої програми Rust, класичної програми Hello World:" #: src/types-and-values/hello-world.md:12 msgid "\"Hello 🌍!\"" msgstr "\"Привіт 🌍!\"" #: src/types-and-values/hello-world.md:16 msgid "What you see:" msgstr "Що ви бачите:" #: src/types-and-values/hello-world.md:18 msgid "Functions are introduced with `fn`." msgstr "Функції вводяться за допомогою `fn`." #: src/types-and-values/hello-world.md:19 msgid "Blocks are delimited by curly braces like in C and C++." msgstr "Блоки розділені фігурними дужками, як у C і C++." #: src/types-and-values/hello-world.md:20 msgid "The `main` function is the entry point of the program." msgstr "Функція `main` є точкою входу в програму." #: src/types-and-values/hello-world.md:21 msgid "Rust has hygienic macros, `println!` is an example of this." msgstr "Rust має гігієнічні макроси, `println!` є прикладом цього." #: src/types-and-values/hello-world.md:22 msgid "Rust strings are UTF-8 encoded and can contain any Unicode character." msgstr "" "Рядки в Rust мають кодування UTF-8 і можуть містити будь-які символи Unicode." #: src/types-and-values/hello-world.md:26 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/types-and-values/hello-world.md:31 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/types-and-values/hello-world.md:34 msgid "Rust is modern with full support for things like Unicode." msgstr "Rust сучасний із повною підтримкою таких речей, як Unicode." #: src/types-and-values/hello-world.md:36 msgid "" "Rust uses macros for situations where you want to have a variable number of " "arguments (no function [overloading](../control-flow-basics/functions.md))." msgstr "" "Rust використовує макроси для ситуацій, коли потрібно мати змінну кількість " "аргументів (немає [перевантаження](basic-syntax/functions-interlude.md) " "функцій)." #: src/types-and-values/hello-world.md:39 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/types-and-values/hello-world.md:43 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/types-and-values/variables.md:7 msgid "" "Rust provides type safety via static typing. Variable bindings are made with " "`let`:" msgstr "" "Rust забезпечує безпеку типів за допомогою статичної типізації. Прив'язки " "змінних створюються за допомогою `let`:" #: src/types-and-values/variables.md:13 src/control-flow-basics/loops/for.md:9 #: src/control-flow-basics/blocks-and-scopes.md:21 msgid "\"x: {x}\"" msgstr "\"x: {x}\"" #: src/types-and-values/variables.md:14 msgid "" "// x = 20;\n" " // println!(\"x: {x}\");\n" msgstr "" "// x = 20;\n" " // println!(\"x: {x}\");\n" #: src/types-and-values/variables.md:21 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:24 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:7 msgid "" "Here are some basic built-in types, and the syntax for literal values of " "each type." msgstr "" "Нижче наведено деякі основні вбудовані типи та синтаксис для літеральних " "значень кожного типу." #: src/types-and-values/values.md:10 src/unsafe-rust/exercise.md:20 msgid "Types" msgstr "Типи" #: src/types-and-values/values.md:10 msgid "Literals" msgstr "Літерали" #: src/types-and-values/values.md:12 msgid "Signed integers" msgstr "Цілі числа зі знаком" #: src/types-and-values/values.md:12 msgid "`i8`, `i16`, `i32`, `i64`, `i128`, `isize`" msgstr "`i8`, `i16`, `i32`, `i64`, `i128`, `isize`" #: src/types-and-values/values.md:12 msgid "`-10`, `0`, `1_000`, `123_i64`" msgstr "`-10`, `0`, `1_000`, `123_i64`" #: src/types-and-values/values.md:13 msgid "Unsigned integers" msgstr "Беззнакові цілі числа" #: src/types-and-values/values.md:13 msgid "`u8`, `u16`, `u32`, `u64`, `u128`, `usize`" msgstr "`u8`, `u16`, `u32`, `u64`, `u128`, `usize`" #: src/types-and-values/values.md:13 msgid "`0`, `123`, `10_u16`" msgstr "`0`, `123`, `10_u16`" #: src/types-and-values/values.md:14 msgid "Floating point numbers" msgstr "Числа з плаваючою комою" #: src/types-and-values/values.md:14 msgid "`f32`, `f64`" msgstr "`f32`, `f64`" #: src/types-and-values/values.md:14 msgid "`3.14`, `-10.0e20`, `2_f32`" msgstr "`3.14`, `-10.0e20`, `2_f32`" #: src/types-and-values/values.md:15 msgid "Unicode scalar values" msgstr "Скалярні значення Unicode" #: src/types-and-values/values.md:15 src/android/aidl/types/primitives.md:9 msgid "`char`" msgstr "`char`" #: src/types-and-values/values.md:15 msgid "`'a'`, `'α'`, `'∞'`" msgstr "`'a'`, `'α'`, `'∞'`" #: src/types-and-values/values.md:16 msgid "Booleans" msgstr "Логічні значення" #: src/types-and-values/values.md:16 src/android/aidl/types/primitives.md:7 msgid "`bool`" msgstr "`bool`" #: src/types-and-values/values.md:16 msgid "`true`, `false`" msgstr "`true`, `false`" #: src/types-and-values/values.md:18 msgid "The types have widths as follows:" msgstr "Типи мають наступну ширину:" #: src/types-and-values/values.md:20 msgid "`iN`, `uN`, and `fN` are _N_ bits wide," msgstr "`iN`, `uN` і `fN` мають ширину _N_ біт," #: src/types-and-values/values.md:21 msgid "`isize` and `usize` are the width of a pointer," msgstr "`isize` і `usize` – це ширина вказівника," #: src/types-and-values/values.md:22 msgid "`char` is 32 bits wide," msgstr "`char` має ширину 32 біти," #: src/types-and-values/values.md:23 msgid "`bool` is 8 bits wide." msgstr "`bool` має ширину 8 біт." #: src/types-and-values/values.md:27 msgid "There are a few syntaxes which are not shown above:" msgstr "Є кілька синтаксисів, які не показано вище:" #: src/types-and-values/values.md:29 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:13 msgid "\"result: {}\"" msgstr "\"результат: {}\"" #: src/types-and-values/arithmetic.md:19 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:23 msgid "Arithmetic is very similar to other languages, with similar precedence." msgstr "Арифметика дуже схожа на інші мови, зі схожими пріоритетами." #: src/types-and-values/arithmetic.md:25 msgid "" "What about integer overflow? In C and C++ overflow of _signed_ integers is " "actually undefined, and might do unknown things at runtime. In Rust, it's " "defined." msgstr "" "Як бути з переповненням цілих чисел? У мовах C та C++ переповнення цілих " "чисел _зі знаком_ фактично не визначено, і може робити невідомі речі під час " "виконання. У Rust воно визначене." #: src/types-and-values/arithmetic.md:29 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:34 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/inference.md:7 msgid "Rust will look at how the variable is _used_ to determine the type:" msgstr "Rust перевірить, як _використовується_ змінна для визначення типу:" #: src/types-and-values/inference.md:32 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:35 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:40 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:49 msgid "// ERROR: no implementation for `{float} == {integer}`\n" msgstr "// ПОМИЛКА: немає реалізації для `{float} == {integer}`\n" #: src/types-and-values/exercise.md:2 src/control-flow-basics/exercise.md:2 #: src/tuples-and-arrays/exercise.md:2 src/references/exercise.md:2 #: src/user-defined-types/exercise.md:2 src/methods-and-traits/traits.md:2 #: src/modules/exercise.md:2 src/concurrency/threads/plain.md:2 msgid "minutes: 15" msgstr "хвилин: 15" #: src/types-and-values/exercise.md:7 msgid "" "The Fibonacci sequence begins with `[0,1]`. For n>1, the n'th Fibonacci " "number is calculated recursively as the sum of the n-1'th and n-2'th " "Fibonacci numbers." msgstr "" "Послідовність Фібоначчі починається з `[0,1]`. Для n>1 n-те число Фібоначчі " "обчислюється рекурсивно як сума n-1-го та n-2-го чисел Фібоначчі." #: src/types-and-values/exercise.md:10 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:16 msgid "// The base case.\n" msgstr "// Базовий випадок.\n" #: src/types-and-values/exercise.md:17 src/types-and-values/exercise.md:20 #: src/control-flow-basics/exercise.md:31 #: src/control-flow-basics/exercise.md:35 msgid "\"Implement this\"" msgstr "\"Реалізуйте це\"" #: src/types-and-values/exercise.md:19 msgid "// The recursive case.\n" msgstr "// Рекурсивний випадок.\n" #: src/types-and-values/exercise.md:26 src/types-and-values/solution.md:14 msgid "\"fib({n}) = {}\"" msgstr "\"fib({n}) = {}\"" #: src/control-flow-basics/if.md:2 src/control-flow-basics/break-continue.md:2 #: src/pattern-matching/destructuring-structs.md:2 #: src/pattern-matching/destructuring-enums.md:2 #: src/concurrency/async/futures.md:2 #: src/concurrency/async-control-flow/join.md:2 msgid "minutes: 4" msgstr "хвилин: 4" #: src/control-flow-basics/if.md:5 msgid "`if` expressions" msgstr "Вирази `if`" #: src/control-flow-basics/if.md:7 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/if.md:15 msgid "\"zero!\"" msgstr "\"нуль!\"" #: src/control-flow-basics/if.md:17 msgid "\"biggish\"" msgstr "\"великий\"" #: src/control-flow-basics/if.md:19 msgid "\"huge\"" msgstr "\"величезний\"" #: src/control-flow-basics/if.md:24 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/if.md:30 msgid "\"small\"" msgstr "\"маленький\"" #: src/control-flow-basics/if.md:30 msgid "\"large\"" msgstr "\"великий\"" #: src/control-flow-basics/if.md:31 msgid "\"number size: {}\"" msgstr "\"розмір числа: {}\"" #: src/control-flow-basics/if.md:37 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/if.md:41 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:7 msgid "There are three looping keywords in Rust: `while`, `loop`, and `for`:" msgstr "У Rust є три ключові слова циклу: `while`, `loop` і `for`:" #: src/control-flow-basics/loops.md:9 msgid "`while`" msgstr "`while`" #: src/control-flow-basics/loops.md:11 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:22 msgid "\"Final x: {x}\"" msgstr "\"Final x: {x}\"" #: src/control-flow-basics/loops/for.md:3 msgid "" "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) iterates " "over ranges of values or the items in a collection:" msgstr "" "Цикл [`for`](https://doc.rust-lang.org/std/keyword.for.html) виконує " "ітерації над діапазонами значень або елементами колекції:" #: src/control-flow-basics/loops/for.md:13 msgid "\"elem: {elem}\"" msgstr "\"elem: {elem}\"" #: src/control-flow-basics/loops/for.md:20 msgid "" "Under the hood `for` loops use a concept called \"iterators\" to handle " "iterating over different kinds of ranges/collections. Iterators will be " "discussed in more detail later." msgstr "" "Під капотом циклів `for` використовується концепція, яка називається " "\"ітератори\", для обробки ітерацій над різними типами діапазонів/колекцій. " "Ітератори буде розглянуто більш детально пізніше." #: src/control-flow-basics/loops/for.md:23 msgid "" "Note that the first `for` loop only iterates to `4`. Show the `1..=5` syntax " "for an inclusive range." msgstr "" "Зверніть увагу, що перший цикл `for` виконує ітерацію тільки до `4`. " "Покажіть синтаксис `1..=5` для включеного діапазону." #: src/control-flow-basics/loops/loop.md:3 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/loop.md:11 msgid "\"{i}\"" msgstr "\"{i}\"" #: 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:10 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:26 src/std-traits/exercise.md:27 #: src/std-traits/solution.md:29 src/smart-pointers/trait-objects.md:98 #: src/smart-pointers/trait-objects.md:99 #: src/borrowing/interior-mutability.md:51 src/modules/exercise.md:140 #: src/modules/solution.md:78 src/android/build-rules/library.md:44 #: src/android/interoperability/cpp/rust-bridge.md:17 #: src/concurrency/async-pitfalls/cancellation.md:63 msgid "\"{}\"" msgstr "\"{}\"" #: src/control-flow-basics/break-continue/labels.md:3 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/labels.md:19 msgid "\"elements searched: {elements_searched}\"" msgstr "" #: src/control-flow-basics/break-continue/labels.md:25 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:7 msgid "Blocks" msgstr "Блоки" #: src/control-flow-basics/blocks-and-scopes.md:9 msgid "" "A block in Rust contains a sequence of expressions, enclosed by braces `{}`. " "Each block has a value and a type, which are those of the last expression of " "the block:" msgstr "" "Блок у Rust містить послідовність виразів, взятих у фігурні дужки `{}`. " "Кожен блок має значення і тип, які відповідають значенню і типу останнього " "виразу в блоці:" #: src/control-flow-basics/blocks-and-scopes.md:18 msgid "\"y: {y}\"" msgstr "\"y: {y}\"" #: src/control-flow-basics/blocks-and-scopes.md:25 msgid "" "If the last expression ends with `;`, then the resulting value and type is " "`()`." msgstr "" "Якщо останній вираз закінчується символом `;`, то результуюче значення і тип " "буде `()`." #: src/control-flow-basics/blocks-and-scopes.md:29 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/scopes.md:3 msgid "A variable's scope is limited to the enclosing block." msgstr "Область видимості змінної обмежується блоком, що її охоплює." #: src/control-flow-basics/blocks-and-scopes/scopes.md:5 msgid "" "You can shadow variables, both those from outer scopes and variables from " "the same scope:" msgstr "" "Ви можете затіняти змінні, як із зовнішніх областей, так і змінні з тієї ж " "області:" #: src/control-flow-basics/blocks-and-scopes/scopes.md:11 msgid "\"before: {a}\"" msgstr "\"до: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md:13 #: src/generics/exercise.md:22 src/generics/solution.md:20 #: src/std-traits/from-and-into.md:11 src/std-traits/from-and-into.md:23 msgid "\"hello\"" msgstr "\"привіт\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md:14 msgid "\"inner scope: {a}\"" msgstr "\"внутрішня область видимості: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md:17 msgid "\"shadowed in inner scope: {a}\"" msgstr "\"затінений у внутрішній області видимості: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md:20 msgid "\"after: {a}\"" msgstr "\"після: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md:26 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/scopes.md:28 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/scopes.md:31 msgid "A shadowing variable can have a different type." msgstr "Змінна затінення може мати інший тип." #: src/control-flow-basics/blocks-and-scopes/scopes.md:32 msgid "" "Shadowing looks obscure at first, but is convenient for holding on to values " "after `.unwrap()`." msgstr "" "Затінення спочатку виглядає незрозумілим, але є зручним для збереження " "значень після `.unwrap()`." #: src/control-flow-basics/functions.md:25 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:27 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:31 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:33 msgid "" "Overloading is not supported -- each function has a single implementation." msgstr "Перевантаження не підтримується - кожна функція має єдину реалізацію." #: src/control-flow-basics/functions.md:34 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:36 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:7 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:11 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:13 msgid "" "`format!(format, ..)` works just like `println!` but returns the result as a " "string." msgstr "" "`format!(format, ..)` працює так само, як `println!`, але повертає результат " "у вигляді рядка." #: src/control-flow-basics/macros.md:15 msgid "`dbg!(expression)` logs the value of the expression and returns it." msgstr "`dbg!(вираз)` записує значення виразу і повертає його." #: src/control-flow-basics/macros.md:16 msgid "" "`todo!()` marks a bit of code as not-yet-implemented. If executed, it will " "panic." msgstr "" "`todo!()` позначає частину коду як таку, що ще не виконана. Якщо цей код " "буде виконано, він викличе паніку." #: src/control-flow-basics/macros.md:18 msgid "" "`unreachable!()` marks a bit of code as unreachable. If executed, it will " "panic." msgstr "" "`unreachable!()` позначає ділянку коду як недосяжну. Якщо цей код буде " "виконано, він викличе паніку." #: src/control-flow-basics/macros.md:36 msgid "\"{n}! = {}\"" msgstr "\"{n}! = {}\"" #: src/control-flow-basics/macros.md:42 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:46 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:7 msgid "" "The [Collatz Sequence](https://en.wikipedia.org/wiki/Collatz_conjecture) is " "defined as follows, for an arbitrary n1 greater than zero:" msgstr "" "[Послідовність Коллатца](https://en.wikipedia.org/wiki/Collatz_conjecture) " "визначається наступним чином, для довільного n1 більшого за нуль:" #: src/control-flow-basics/exercise.md:10 msgid "" "If _ni_ is 1, then the sequence terminates at _ni_." msgstr "" "Якщо _ni_ є 1, то послідовність завершується при _ni_." #: src/control-flow-basics/exercise.md:11 msgid "If _ni_ is even, then _ni+1 = ni / 2_." msgstr "" "Якщо _ni_ є парним, то _ni+1 = ni / 2_." #: src/control-flow-basics/exercise.md:12 msgid "" "If _ni_ is odd, then _ni+1 = 3 * ni + 1_." msgstr "" "Якщо _ni_ є непарним, то _ni+1 = 3 * ni + " "1_." #: src/control-flow-basics/exercise.md:14 msgid "For example, beginning with _n1_ = 3:" msgstr "Наприклад, починаючи з _n1_ = 3:" #: src/control-flow-basics/exercise.md:16 msgid "3 is odd, so _n2_ = 3 * 3 + 1 = 10;" msgstr "3 є непарним, таким чином _n2_ = 3 * 3 + 1 = 10;" #: src/control-flow-basics/exercise.md:17 msgid "10 is even, so _n3_ = 10 / 2 = 5;" msgstr "10 є парним, таким чином _n3_ = 10 / 2 = 5;" #: src/control-flow-basics/exercise.md:18 msgid "5 is odd, so _n4_ = 3 * 5 + 1 = 16;" msgstr "5 є непарним, таким чином _n4_ = 3 * 5 + 1 = 16;" #: src/control-flow-basics/exercise.md:19 msgid "16 is even, so _n5_ = 16 / 2 = 8;" msgstr "16 є парним, таким чином _n5_ = 16 / 2 = 8;" #: src/control-flow-basics/exercise.md:20 msgid "8 is even, so _n6_ = 8 / 2 = 4;" msgstr "8 є парним, таким чином _n6_ = 8 / 2 = 4;" #: src/control-flow-basics/exercise.md:21 msgid "4 is even, so _n7_ = 4 / 2 = 2;" msgstr "4 є парним, таким чином _n7_ = 4 / 2 = 2;" #: src/control-flow-basics/exercise.md:22 msgid "2 is even, so _n8_ = 1; and" msgstr "2 є парним, таким чином _n8_ = 1; та" #: src/control-flow-basics/exercise.md:23 msgid "the sequence terminates." msgstr "послідовність завершується." #: src/control-flow-basics/exercise.md:25 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:29 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/threads/scoped.md:15 #: src/concurrency/threads/scoped.md:34 msgid "\"Length: {}\"" msgstr "\"Довжина: {}\"" #: src/welcome-day-1-afternoon.md msgid "session: Day 1 Afternoon target_minutes: 180" msgstr "session: Day 1 Afternoon target_minutes: 180" #: src/welcome-day-1-afternoon.md src/welcome-day-2-afternoon.md #: src/welcome-day-3-afternoon.md src/welcome-day-4-afternoon.md msgid "Welcome Back" msgstr "Ласкаво просимо назад" #: src/tuples-and-arrays/arrays.md:19 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/arrays.md:25 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/arrays.md:29 msgid "We can use literals to assign values to arrays." msgstr "Ми можемо використовувати літерали для присвоєння значень масивам." #: src/tuples-and-arrays/arrays.md:31 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/arrays.md:36 msgid "" "Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be " "easier to read." msgstr "" "Додавання `#`, наприклад `{a:#?}`, викликає формат \"гарного друку\", який " "може бути легшим для читання." #: src/tuples-and-arrays/tuples.md:19 msgid "Like arrays, tuples have a fixed length." msgstr "Як і масиви, кортежі мають фіксовану довжину." #: src/tuples-and-arrays/tuples.md:21 msgid "Tuples group together values of different types into a compound type." msgstr "Кортежі групують значення різних типів у складений тип." #: src/tuples-and-arrays/tuples.md:23 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.md:26 msgid "" "The empty tuple `()` is referred to as the \"unit type\" and signifies " "absence of a return value, akin to `void` in other languages." msgstr "" "Порожній кортеж `()` називається \" типом одиниці\" і означає відсутність " "значення, що повертається, подібно до `void` в інших мовах." #: src/tuples-and-arrays/iteration.md:7 msgid "The `for` statement supports iterating over arrays (but not tuples)." msgstr "Оператор `for` підтримує ітерацію над масивами (але не кортежами)." #: src/tuples-and-arrays/iteration.md:22 msgid "" "This functionality uses the `IntoIterator` trait, but we haven't covered " "that yet." msgstr "" "Ця функціональність використовує трейт `IntoIterator`, але ми ще не " "розглядали його." #: src/tuples-and-arrays/iteration.md:25 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/destructuring.md:7 msgid "" "When working with tuples and other structured values it's common to want to " "extract the inner values into local variables. This can be done manually by " "directly accessing the inner values:" msgstr "" "При роботі з кортежами та іншими структурованими значеннями часто виникає " "потреба витягти внутрішні значення у локальні змінні. Це можна зробити " "вручну шляхом прямого доступу до внутрішніх значень:" #: src/tuples-and-arrays/destructuring.md:15 #: src/tuples-and-arrays/destructuring.md:25 msgid "\"left: {left}, right: {right}\"" msgstr "\"left: {left}, right: {right}\"" #: src/tuples-and-arrays/destructuring.md:19 msgid "" "However, Rust also supports using pattern matching to destructure a larger " "value into its constituent parts:" msgstr "" "Однак, Rust також підтримує використання зіставлення шаблонів для розбиття " "більшого значення на складові частини:" #: src/tuples-and-arrays/destructuring.md:31 msgid "" "The patterns used here are \"irrefutable\", meaning that the compiler can " "statically verify that the value on the right of `=` has the same structure " "as the pattern." msgstr "" "Шаблони, що використовуються тут, є \"неспростовними\", тобто компілятор " "може статично перевірити, що значення праворуч від `=` має таку саму " "структуру, як і шаблон." #: src/tuples-and-arrays/destructuring.md:34 msgid "" "A variable name is an irrefutable pattern that always matches any value, " "hence why we can also use `let` to declare a single variable." msgstr "" "Ім'я змінної - це неспростовний шаблон, який завжди відповідає будь-якому " "значенню, тому ми також можемо використовувати `let` для оголошення однієї " "змінної." #: src/tuples-and-arrays/destructuring.md:36 msgid "" "Rust also supports using patterns in conditionals, allowing for equality " "comparison and destructuring to happen at the same time. This form of " "pattern matching will be discussed in more detail later." msgstr "" "Rust також підтримує використання шаблонів в умовних операторах, що дозволяє " "виконувати порівняння на рівність і деструкцію одночасно. Ця форма " "порівняння шаблонів буде розглянута більш детально пізніше." #: src/tuples-and-arrays/destructuring.md:39 msgid "" "Edit the examples above to show the compiler error when the pattern doesn't " "match the value being matched on." msgstr "" "Відредагуйте приклади вище, щоб показати помилку компілятора, коли шаблон не " "збігається зі значенням, що порівнюється." #: src/tuples-and-arrays/exercise.md:7 msgid "Arrays can contain other arrays:" msgstr "Масиви можуть містити інші масиви:" #: src/tuples-and-arrays/exercise.md:13 msgid "What is the type of this variable?" msgstr "Який тип цієї змінної?" #: src/tuples-and-arrays/exercise.md:15 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:26 msgid "" "Copy the code below to and implement the " "function. This function only operates on 3x3 matrices." msgstr "" "Скопіюйте наведений нижче код на і реалізуйте " "функцію. Ця функція працює лише з матрицями 3x3." #: src/tuples-and-arrays/exercise.md:30 src/borrowing/exercise.md:18 #: src/unsafe-rust/exercise.md:55 msgid "// TODO: remove this when you're done with your implementation.\n" msgstr "// TODO: видаліть це, коли закінчите реалізацію.\n" #: src/tuples-and-arrays/exercise.md:40 src/tuples-and-arrays/exercise.md:48 #: src/tuples-and-arrays/solution.md:17 src/tuples-and-arrays/solution.md:25 msgid "//\n" msgstr "//\n" #: src/tuples-and-arrays/exercise.md:57 src/tuples-and-arrays/solution.md:34 msgid "// <-- the comment makes rustfmt add a newline\n" msgstr "// <-- коментар змушує rustfmt додати новий рядок\n" #: src/tuples-and-arrays/exercise.md:62 src/tuples-and-arrays/solution.md:39 msgid "\"matrix: {:#?}\"" msgstr "\"матриця: {:#?}\"" #: src/tuples-and-arrays/exercise.md:64 src/tuples-and-arrays/solution.md:41 msgid "\"transposed: {:#?}\"" msgstr "\"транспонована: {:#?}\"" #: src/references/shared.md:7 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:24 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:28 msgid "Rust will statically forbid dangling references:" msgstr "Rust статично забороняє висячі посилання:" #: src/references/shared.md:41 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:46 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:51 msgid "" "Rust does not automatically create references for you - the `&` is always " "required." msgstr "" "Rust не створює посилання автоматично - завжди потрібно використовувати `&`." #: src/references/shared.md:54 msgid "" "Rust will auto-dereference in some cases, in particular when invoking " "methods (try `r.is_ascii()`). There is no need for an `->` operator like in " "C++." msgstr "" "У деяких випадках Rust виконує автоматичне розіменування, зокрема під час " "виклику методів (спробуйте `r.is_ascii()`). Тут не потрібен оператор `->`, " "як у C++." #: src/references/shared.md:57 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:61 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:64 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:69 msgid "We will talk more about borrowing when we get to ownership." msgstr "Про запозичення ми поговоримо більше, коли дійдемо до володіння." #: src/references/exclusive.md:7 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:25 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:30 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/slices.md:5 msgid "Slices" msgstr "Зрізи" #: src/references/slices.md:7 msgid "A slice gives you a view into a larger collection:" msgstr "Зріз дає змогу поглянути на більшу колекцію:" #: src/references/slices.md:22 msgid "Slices borrow data from the sliced type." msgstr "Зрізи запозичують дані зі зрізаного типу." #: src/references/slices.md:23 msgid "Question: What happens if you modify `a[3]` right before printing `s`?" msgstr "" "Запитання: що станеться, якщо змінити `a[3]` безпосередньо перед друком `s`?" #: src/references/slices.md:27 msgid "" "We create a slice by borrowing `a` and specifying the starting and ending " "indexes in brackets." msgstr "" "Ми створюємо зріз, запозичуючи `a` та вказуючи початковий і кінцевий індекси " "в дужках." #: src/references/slices.md:30 msgid "" "If the slice starts at index 0, Rust’s range syntax allows us to drop the " "starting index, meaning that `&a[0..a.len()]` and `&a[..a.len()]` are " "identical." msgstr "" "Якщо зріз починається з індексу 0, синтаксис діапазону Rust дозволяє нам " "відкинути початковий індекс, тобто `&a[0..a.len()]` і `&a[..a.len()]` " "ідентичні." #: src/references/slices.md:34 msgid "" "The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are " "identical." msgstr "" "Теж саме стосується останнього індексу, тому `&a[2..a.len()]` і `&a[2..]` " "ідентичні." #: src/references/slices.md:37 msgid "" "To easily create a slice of the full array, we can therefore use `&a[..]`." msgstr "" "Щоб легко створити повний зріз масиву, ми можемо використовувати `&a[..]`." #: src/references/slices.md:39 msgid "" "`s` is a reference to a slice of `i32`s. Notice that the type of `s` " "(`&[i32]`) no longer mentions the array length. This allows us to perform " "computation on slices of different sizes." msgstr "" "`s` є посиланням на зріз `i32`. Зверніть увагу, що тип `s` (`&[i32]`) більше " "не згадує довжину масиву. Це дозволяє нам виконувати обчислення на зрізах " "різного розміру." #: src/references/slices.md:43 msgid "" "Slices always borrow from another object. In this example, `a` has to remain " "'alive' (in scope) for at least as long as our slice." msgstr "" "Зрізи завжди запозичуються з іншого об'єкта. У цьому прикладі `a` має " "залишатися 'живим' (в області застосування) принаймні стільки ж, скільки і " "наш зріз." #: src/references/slices.md:46 msgid "" "The question about modifying `a[3]` can spark an interesting discussion, but " "the answer is that for memory safety reasons you cannot do it through `a` at " "this point in the execution, but you can read the data from both `a` and `s` " "safely. It works before you created the slice, and again after the " "`println`, when the slice is no longer used." msgstr "" "Питання про модифікацію `a[3]` може викликати цікаву дискусію, але відповідь " "полягає в тому, що з міркувань безпеки пам’яті ви не можете зробити це через " "`a` на цьому етапі виконання, але ви можете читати дані з обох `a ` і `s` " "безпечно. Це спрацьовує до того, як ви створили зріз, і знову після " "`println`, коли зріз більше не використовується." #: src/references/strings.md:11 msgid "We can now understand the two string types in Rust:" msgstr "Тепер ми можемо зрозуміти два типи рядків у Rust:" #: src/references/strings.md:13 msgid "`&str` is a slice of UTF-8 encoded bytes, similar to `&[u8]`." msgstr "" #: src/references/strings.md:14 msgid "" "`String` is an owned buffer of UTF-8 encoded bytes, similar to `Vec`." msgstr "" #: src/references/strings.md:21 src/std-traits/read-and-write.md:40 msgid "\"World\"" msgstr "\"Світ\"" #: src/references/strings.md:22 msgid "\"s1: {s1}\"" msgstr "\"s1: {s1}\"" #: src/references/strings.md:24 msgid "\"Hello \"" msgstr "\"Привіт \"" #: src/references/strings.md:25 src/references/strings.md:27 #: src/memory-management/move.md:13 msgid "\"s2: {s2}\"" msgstr "\"s2: {s2}\"" #: src/references/strings.md:30 msgid "\"s3: {s3}\"" msgstr "\"s3: {s3}\"" #: src/references/strings.md:36 msgid "" "`&str` introduces a string slice, which is an immutable reference to UTF-8 " "encoded string data stored in a block of memory. String literals " "(`\"Hello\"`), are stored in the program’s binary." msgstr "" "`&str` представляє зріз рядка, який є незмінним посиланням на дані рядка в " "кодуванні UTF-8, що зберігаються в блоці пам’яті. Рядкові літерали " "(`\"Hello\"`) зберігаються у бінарному файлі програми." #: src/references/strings.md:40 msgid "" "Rust's `String` type is a wrapper around a vector of bytes. As with a " "`Vec`, it is owned." msgstr "" "Тип `String` в Rust — це оболонка навколо вектора байтів. Як і у випадку з " "`Vec`, він знаходиться у володінні." #: src/references/strings.md:43 msgid "" "As with many other types `String::from()` creates a string from a string " "literal; `String::new()` creates a new empty string, to which string data " "can be added using the `push()` and `push_str()` methods." msgstr "" "Як і у багатьох інших типів, `String::from()` створює рядок із рядкового " "літералу; `String::new()` створює новий порожній рядок, до якого дані рядка " "можна додати за допомогою методів `push()` і `push_str()`." #: src/references/strings.md:47 msgid "" "The `format!()` macro is a convenient way to generate an owned string from " "dynamic values. It accepts the same format specification as `println!()`." msgstr "" "Макрос `format!()` є зручним способом створення рядка, яким володіють, з " "динамічних значень. Він приймає таку саму специфікацію формату, як і " "`println!()`." #: src/references/strings.md:50 msgid "" "You can borrow `&str` slices from `String` via `&` and optionally range " "selection. If you select a byte range that is not aligned to character " "boundaries, the expression will panic. The `chars` iterator iterates over " "characters and is preferred over trying to get character boundaries right." msgstr "" "Ви можете запозичувати зрізки `&str` з `String` за допомогою `&` і, за " "бажанням, вибору діапазону. Якщо ви виберете діапазон байт, який не " "вирівняно за межами символів, вираз запанікує. Ітератор `chars` перебирає " "символи, і йому надається перевага перед спробами вирівняти межі символів." #: src/references/strings.md:55 msgid "" "For C++ programmers: think of `&str` as `std::string_view` from C++, but the " "one that always points to a valid string in memory. Rust `String` is a rough " "equivalent of `std::string` from C++ (main difference: it can only contain " "UTF-8 encoded bytes and will never use a small-string optimization)." msgstr "" "Для програмістів на C++: думайте про `&str` як про `std::string_view` з C++, " "але такий, що завжди вказує на дійсний рядок у пам'яті. Rust `String` є " "приблизним еквівалентом `std::string` з C++ (головна відмінність: він може " "містити лише байти у кодуванні UTF-8 і ніколи не використовує оптимізацію " "малих рядків).." #: src/references/strings.md:60 msgid "Byte strings literals allow you to create a `&[u8]` value directly:" msgstr "" "Літерали байтових рядків дозволяють створювати значення `&[u8]` " "безпосередньо:" #: src/references/strings.md:70 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/references/exercise.md:7 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:11 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:19 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:27 msgid "// Use the following `main` to test your work.\n" msgstr "Використовуйте наступний `main` для тестування вашої роботи.\n" #: src/references/exercise.md:31 src/references/solution.md:22 msgid "\"Magnitude of a unit vector: {}\"" msgstr "\"Величина одиничного вектора: {}\"" #: src/references/exercise.md:34 src/references/solution.md:25 msgid "\"Magnitude of {v:?}: {}\"" msgstr "\"Величина {v:?}: {}\"" #: src/references/exercise.md:36 src/references/solution.md:27 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:7 msgid "Like C and C++, Rust has support for custom structs:" msgstr "Подібно до C і C++, Rust підтримує користувальницькі структури:" #: src/user-defined-types/named-structs.md:16 msgid "\"{} is {} years old\"" msgstr "\"{} віком {} років\"" #: src/user-defined-types/named-structs.md:20 #: src/android/interoperability/with-c/bindgen.md:87 msgid "\"Peter\"" msgstr "\"Peter\"" #: src/user-defined-types/named-structs.md:26 msgid "\"Avery\"" msgstr "\"Avery\"" #: src/user-defined-types/named-structs.md:31 msgid "\"Jackie\"" msgstr "\"Jackie\"" #: src/user-defined-types/named-structs.md:38 #: src/user-defined-types/enums.md:32 src/pattern-matching/match.md:41 #: src/methods-and-traits/methods.md:72 msgid "Key Points:" msgstr "Ключові моменти:" #: src/user-defined-types/named-structs.md:40 msgid "Structs work like in C or C++." msgstr "Структури працюють як у C або C++." #: src/user-defined-types/named-structs.md:41 msgid "Like in C++, and unlike in C, no typedef is needed to define a type." msgstr "" "Як і в C++, і на відміну від C, для визначення типу не потрібен typedef." #: src/user-defined-types/named-structs.md:42 msgid "Unlike in C++, there is no inheritance between structs." msgstr "На відміну від C++, між структурами немає успадкування." #: src/user-defined-types/named-structs.md:43 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:45 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:48 msgid "" "The next slide will introduce Tuple structs, used when the field names are " "not important." msgstr "" "На наступному слайді буде представлено структури кортежу, які " "використовуються, коли імена полів не важливі." #: src/user-defined-types/named-structs.md:50 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:52 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:11 msgid "If the field names are unimportant, you can use a tuple struct:" msgstr "Якщо імена полів неважливі, ви можете використати структуру кортежу:" #: src/user-defined-types/tuple-structs.md:18 msgid "\"({}, {})\"" msgstr "\"({}, {})\"" #: src/user-defined-types/tuple-structs.md:22 msgid "This is often used for single-field wrappers (called newtypes):" msgstr "" "Це часто використовується для обгорток з одним полем (так званих newtypes):" #: src/user-defined-types/tuple-structs.md:29 msgid "\"Ask a rocket scientist at NASA\"" msgstr "\"Запитайте вченого-ракетника з NASA\"" #: src/user-defined-types/tuple-structs.md:33 #: src/android/interoperability/cpp/cpp-bridge.md:50 #: src/bare-metal/microcontrollers/type-state.md:14 #: src/concurrency/async-pitfalls/cancellation.md:102 #: src/concurrency/async-pitfalls/cancellation.md:106 msgid "// ...\n" msgstr "// ...\n" #: src/user-defined-types/tuple-structs.md:44 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:46 msgid "The number is measured in some units: `Newtons` in the example above." msgstr "" "Число вимірюється в деяких одиницях: у наведеному вище прикладі `Newtons`." #: src/user-defined-types/tuple-structs.md:47 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:50 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:52 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:54 msgid "Operator overloading is discussed on Day 3 (generics)." msgstr "Перевантаження операторів обговорюється в день 3 (дженерики)." #: src/user-defined-types/tuple-structs.md:55 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:7 msgid "" "The `enum` keyword allows the creation of a type which has a few different " "variants:" msgstr "" "Ключове слово `enum` дозволяє створити тип, який має кілька різних варіантів:" #: src/user-defined-types/enums.md:19 msgid "// Simple variant\n" msgstr "// Простий варіант\n" #: src/user-defined-types/enums.md:20 msgid "// Tuple variant\n" msgstr "// Варіант кортежу\n" #: src/user-defined-types/enums.md:21 msgid "// Struct variant\n" msgstr "// Варіант структури\n" #: src/user-defined-types/enums.md:26 msgid "\"On this turn: {:?}\"" msgstr "\"На цьому повороті: {:?}\"" #: src/user-defined-types/enums.md:34 msgid "Enumerations allow you to collect a set of values under one type." msgstr "Переліки дозволяють збирати набір значень під одним типом." #: src/user-defined-types/enums.md:35 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:37 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:40 msgid "This might be a good time to compare structs and enums:" msgstr "Це може бути гарний час для порівняння структури та переліки:" #: src/user-defined-types/enums.md:41 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:43 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:46 msgid "Rust uses minimal space to store the discriminant." msgstr "" "Rust використовує мінімальний обсяг пам'яті для зберігання дискримінанта." #: src/user-defined-types/enums.md:47 msgid "If necessary, it stores an integer of the smallest required size" msgstr "Якщо потрібно, він зберігає ціле число найменшого необхідного розміру" #: src/user-defined-types/enums.md:48 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:52 msgid "" "You can control the discriminant if needed (e.g., for compatibility with C):" msgstr "" "За потреби можна керувати дискримінантом (наприклад, для сумісності з C):" #: src/user-defined-types/enums.md:70 msgid "" "Without `repr`, the discriminant type takes 2 bytes, because 10001 fits 2 " "bytes." msgstr "" "Без `repr` тип дискримінанта займає 2 байти, оскільки 10001 вміщує 2 байти." #: src/user-defined-types/enums.md:73 src/user-defined-types/static.md:30 #: src/memory-management/review.md:54 src/memory-management/move.md:103 #: src/memory-management/copy-types.md:60 src/smart-pointers/box.md:88 #: src/borrowing/shared.md:36 src/error-handling/result.md:49 msgid "More to Explore" msgstr "Більше інформації для вивчення" #: src/user-defined-types/enums.md:75 msgid "" "Rust has several optimizations it can employ to make enums take up less " "space." msgstr "" "Rust має декілька оптимізацій, які можна застосувати, щоб зменшити розмір " "переліків." #: src/user-defined-types/enums.md:77 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::