From 8d33b7c7aceca2a64b1041687f2ee22e69a52f8f Mon Sep 17 00:00:00 2001 From: "Md. Rasel Mandol" <130071257+raselmandol@users.noreply.github.com> Date: Sun, 4 Jun 2023 22:33:10 +0530 Subject: [PATCH] bn: Fixed and removed some translations. (#740) --- po/bn.po | 691 ++++++++++++++++++++++++------------------------------- 1 file changed, 306 insertions(+), 385 deletions(-) diff --git a/po/bn.po b/po/bn.po index 06f6e9f5..88b1c949 100644 --- a/po/bn.po +++ b/po/bn.po @@ -18,7 +18,7 @@ msgstr "Comprehensive Rust đŸĻ€ āĻ āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āĻŦāĻžāĻ—āϤāĻŽ" #: src/SUMMARY.md:4 msgid "Running the Course" -msgstr "āϕ⧋āĻ°ā§āϏ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇" +msgstr "āϕ⧋āĻ°ā§āϏ āϚāĻžāϞāĻžāύ⧋" #: src/SUMMARY.md:5 msgid "Course Structure" @@ -34,15 +34,15 @@ msgstr "āĻ…āύ⧁āĻŦāĻžāĻĻ" #: src/SUMMARY.md:8 msgid "Using Cargo" -msgstr "Cargo āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇" +msgstr "Cargo āĻŦā§āϝāĻŦāĻšāĻžāϰ" #: src/SUMMARY.md:9 msgid "Rust Ecosystem" -msgstr "Rust āĻāϰ āχāϕ⧋āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ" +msgstr "āϰāĻžāĻ¸ā§āϟ āχāϕ⧋āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ" #: src/SUMMARY.md:10 msgid "Code Samples" -msgstr "Code āύāĻŽā§āύāĻž" +msgstr "āϕ⧋āĻĄ āύāĻŽā§āύāĻž" #: src/SUMMARY.md:11 msgid "Running Cargo Locally" @@ -62,7 +62,7 @@ msgstr "Rust āĻ•āĻŋ?" #: src/SUMMARY.md:20 msgid "Hello World!" -msgstr "āĻ“āĻšā§‡ āĻĒ⧃āĻĨāĻŋāĻŦā§€!" +msgstr "Hello World!" #: src/SUMMARY.md:21 msgid "Small Example" @@ -74,11 +74,11 @@ msgstr "Rust āϕ⧇āύ⧋?" #: src/SUMMARY.md:23 msgid "Compile Time Guarantees" -msgstr "āĻ•āĻŽā§āĻĒāĻžāχāϞ āϏāĻŽā§Ÿā§‡āϰ āĻ…āĻ™ā§āĻ—ā§€āĻ•āĻžāϰ" +msgstr "āĻ•āĻŽā§āĻĒāĻžāχāϞ āϏāĻŽā§Ÿā§‡āϰ āĻ—ā§āϝāĻžāϰāĻžāĻ¨ā§āϟāĻŋ" #: src/SUMMARY.md:24 msgid "Runtime Guarantees" -msgstr "Runtime āĻ…āĻ™ā§āĻ—ā§€āĻ•āĻžāϰ" +msgstr "āϰāĻžāύāϟāĻžāχāĻŽ āĻ—ā§āϝāϰāĻžāĻ¨ā§āϟāĻŋ" #: src/SUMMARY.md:25 msgid "Modern Features" @@ -90,23 +90,23 @@ msgstr "āĻŽā§ŒāϞāĻŋāĻ• āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ" #: src/SUMMARY.md:27 msgid "Scalar Types" -msgstr "āĻ¸ā§āϕ⧇āϞāĻžāϰ āĻĒā§āϰāĻ•āĻžāϰ" +msgstr "āĻ¸ā§āϕ⧇āϞāĻžāϰ āϟāĻžāχāĻĒ" #: src/SUMMARY.md:28 msgid "Compound Types" -msgstr "āϝ⧌āĻ— āĻĒā§āϰāĻ•āĻžāϰ āϏāĻŽā§‚āĻš" +msgstr "āĻ•āĻŽā§āĻĒāĻžāωāĻ¨ā§āĻĄ āϟāĻžāχāĻĒ" #: src/SUMMARY.md:29 msgid "References" -msgstr "āϤāĻĨā§āϝāϏ⧂āĻ¤ā§āϰ" +msgstr "āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ" #: src/SUMMARY.md:30 msgid "Dangling References" -msgstr "āĻā§āϞāĻ¨ā§āϤ āϤāĻĨā§āϝāϏ⧂āĻ¤ā§āϰ" +msgstr "āĻĄā§āϝāĻžāĻ™ā§āĻ—āϞāĻŋāĻ‚ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ" #: src/SUMMARY.md:31 msgid "Slices" -msgstr "āϟ⧁āĻ•āϰāĻž" +msgstr "Slices" #: src/SUMMARY.md:32 msgid "String vs str" @@ -118,24 +118,23 @@ msgstr "āĻĢāĻžāĻ‚āĻļāύ" #: src/SUMMARY.md:34 msgid "Rustdoc" -msgstr "Rust āĻĄāĻ•" +msgstr "Rustdoc" #: src/SUMMARY.md:35 src/SUMMARY.md:82 msgid "Methods" -msgstr "āĻĒāĻĻā§āϧāϤāĻŋ" +msgstr "āĻŽā§‡āĻĨāĻĄāϏ" #: src/SUMMARY.md:36 msgid "Overloading" msgstr "āĻ…āĻ­āĻžāϰāϞ⧋āĻĄāĻŋāĻ‚" -#: src/SUMMARY.md:37 src/SUMMARY.md:66 src/SUMMARY.md:90 src/SUMMARY.md:119 src/SUMMARY.md:148 src/SUMMARY.md:177 src/SUMMARY.md:204 src/SUMMARY.md:225 -#: src/SUMMARY.md:251 src/SUMMARY.md:273 src/SUMMARY.md:293 +#: src/SUMMARY.md:37 src/SUMMARY.md:66 src/SUMMARY.md:90 src/SUMMARY.md:119 src/SUMMARY.md:148 src/SUMMARY.md:177 src/SUMMARY.md:204 src/SUMMARY.md:225 src/SUMMARY.md:251 src/SUMMARY.md:273 src/SUMMARY.md:293 msgid "Exercises" msgstr "āĻ…āύ⧁āĻļā§€āϞāύ" #: src/SUMMARY.md:38 msgid "Implicit Conversions" -msgstr "Implicitte āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ" +msgstr "āχāĻŽāĻĒā§āϞāĻŋāϏāĻŋāϟ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ" #: src/SUMMARY.md:39 msgid "Arrays and for Loops" @@ -143,7 +142,7 @@ msgstr "Arrays āĻāĻŦāĻ‚ for-Loops" #: src/SUMMARY.md:41 msgid "Day 1: Afternoon" -msgstr "āĻĻāĻŋāύ 1: āĻŦāĻŋāĻ•āĻžāϞ" +msgstr "āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāύāσ āĻŦāĻŋāĻ•āĻžāϞ" #: src/SUMMARY.md:43 msgid "Variables" @@ -151,7 +150,7 @@ msgstr "āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ" #: src/SUMMARY.md:44 msgid "Type Inference" -msgstr "āϧāϰāύ āĻ…āύ⧁āĻŽāĻžāύ" +msgstr "āϟāĻžāχāĻĒ āĻ…āύ⧁āĻŽāĻžāύ" #: src/SUMMARY.md:45 msgid "static & const" @@ -159,7 +158,7 @@ msgstr "static & const" #: src/SUMMARY.md:46 msgid "Scopes and Shadowing" -msgstr "āϏ⧁āϝ⧋āĻ— āĻāĻŦāĻ‚ āĻ›āĻžā§ŸāĻž" +msgstr "" #: src/SUMMARY.md:47 msgid "Memory Management" @@ -171,7 +170,7 @@ msgstr "Stack āĻŦāύāĻžāĻŽ Heap" #: src/SUMMARY.md:49 msgid "Stack Memory" -msgstr "āĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻŽā§‡āĻŽā§‹āϰāĻŋ" +msgstr "Stack āĻŽā§‡āĻŽā§‹āϰāĻŋ" #: src/SUMMARY.md:50 msgid "Manual Memory Management" @@ -179,11 +178,11 @@ msgstr "āĻŽā§āϝāĻžāύ⧁⧟āĻžāϞ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻž #: src/SUMMARY.md:51 msgid "Scope-Based Memory Management" -msgstr "āϏ⧁āϝ⧋āĻ— āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻŽā§‡āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž" +msgstr "āĻ¸ā§āϕ⧋āĻĒ āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž" #: src/SUMMARY.md:52 msgid "Garbage Collection" -msgstr "Garbage āϏāĻ‚āĻ—ā§āϰāĻš" +msgstr "" #: src/SUMMARY.md:53 msgid "Rust Memory Management" @@ -199,19 +198,19 @@ msgstr "āĻŽāĻžāϞāĻŋāĻ•āĻžāύāĻž" #: src/SUMMARY.md:56 msgid "Move Semantics" -msgstr "Semantics āϏāϰāĻžāύ" +msgstr "" #: src/SUMMARY.md:57 msgid "Moved Strings in Rust" -msgstr "Rust āĻ āϝ⧇ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞ⧋ āϏāϰāĻžāύ⧋ āĻšā§Ÿā§‡āϛ⧇" +msgstr "" #: src/SUMMARY.md:58 msgid "Double Frees in Modern C++" -msgstr "āφāϧ⧁āύāĻŋāĻ• C++ āĻ āĻĄāĻžāĻŦāϞ āĻŽā§āĻ•ā§āϤ" +msgstr "āφāϧ⧁āύāĻŋāĻ• C++ āĻ āĻĄāĻŦāϞ āĻŽā§āĻ•ā§āϤ" #: src/SUMMARY.md:59 msgid "Moves in Function Calls" -msgstr "āĻĢāĻžāĻ‚āĻļāύ⧇ āĻ•āϞ⧇ āϏāϰ⧇ āϝāĻžā§Ÿ" +msgstr "" #: src/SUMMARY.md:60 msgid "Copying and Cloning" @@ -231,23 +230,23 @@ msgstr "āĻœā§€āĻŦāύāĻ•āĻžāϞ" #: src/SUMMARY.md:64 msgid "Lifetimes in Function Calls" -msgstr "āĻĢāĻžāĻ‚āĻļāύ āĻ•āϞ⧇ āĻœā§€āĻŦāύāĻ•āĻžāϞ" +msgstr "āĻĢāĻžāĻ‚āĻļāύ āĻ•āϞ āĻ āĻœā§€āĻŦāύāĻ•āĻžāϞ" #: src/SUMMARY.md:65 msgid "Lifetimes in Data Structures" -msgstr "āĻĄā§‡āϟāĻž āĻ•āĻžāĻ āĻžāĻŽā§‹āϤ⧇ āĻœā§€āĻŦāύāĻ•āĻžāϞ" +msgstr "āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻ āĻœā§€āĻŦāύāĻ•āĻžāϞ" #: src/SUMMARY.md:67 msgid "Designing a Library" -msgstr "āĻāĻ•āϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āύāĻ•āĻļāĻž āĻ•āϰāĻž" +msgstr "" #: src/SUMMARY.md:68 msgid "Iterators and Ownership" -msgstr "Iteratorer āĻāĻŦāĻ‚ āĻŽāĻžāϞāĻŋāĻ•āĻžāύāĻž" +msgstr "" #: src/SUMMARY.md:71 msgid "Day 2: Morning" -msgstr "āĻĻāĻŋāύ 2: āϏāĻ•āĻžāϞ" +msgstr "āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĻāĻŋāύāσ āϏāĻ•āĻžāϞ" #: src/SUMMARY.md:76 msgid "Structs" @@ -255,7 +254,7 @@ msgstr "Structs" #: src/SUMMARY.md:77 msgid "Tuple Structs" -msgstr "Tuple āĻ•āĻžāĻ āĻžāĻŽā§‹" +msgstr "Tuple Structs" #: src/SUMMARY.md:78 msgid "Field Shorthand Syntax" @@ -275,7 +274,7 @@ msgstr "Enum āĻāϰ āĻŽāĻžāĻĒ" #: src/SUMMARY.md:83 msgid "Method Receiver" -msgstr "Receiver āĻĒāĻĻā§āϧāϤāĻŋ" +msgstr "Method Receiver" #: src/SUMMARY.md:84 src/SUMMARY.md:159 src/SUMMARY.md:272 msgid "Example" @@ -287,15 +286,15 @@ msgstr "āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻŽāĻŋāϞāĻžāύ⧋" #: src/SUMMARY.md:86 msgid "Destructuring Enums" -msgstr "Enums āĻ§ā§āĻŦāĻ‚āϏ āĻ•āϰāĻž" +msgstr "Enums āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ" #: src/SUMMARY.md:87 msgid "Destructuring Structs" -msgstr "Structs āĻ§ā§āĻŦāĻ‚āϏ āĻ•āϰāĻž" +msgstr "Structs āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ " #: src/SUMMARY.md:88 msgid "Destructuring Arrays" -msgstr "Arrays āĻ§ā§āĻŦāĻ‚āϏ āĻ•āϰāĻž" +msgstr "Arrays āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ " #: src/SUMMARY.md:89 msgid "Match Guards" @@ -355,11 +354,11 @@ msgstr "break & continue" #: src/SUMMARY.md:106 msgid "Standard Library" -msgstr "Standard Library" +msgstr "āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ" #: src/SUMMARY.md:107 msgid "Option and Result" -msgstr "Option and Result" +msgstr "Option āĻāĻŦāĻ‚ Result" #: src/SUMMARY.md:108 msgid "String" @@ -379,11 +378,11 @@ msgstr "Box" #: src/SUMMARY.md:112 msgid "Recursive Data Types" -msgstr "Recursive Data āϧāϰāύ" +msgstr "āϰāĻŋāĻ•āĻžāĻ°ā§āϏāĻŋāĻ­ āĻĄā§‡āϟāĻž āϟāĻžāχāĻĒ" #: src/SUMMARY.md:113 msgid "Niche Optimization" -msgstr "Niche Optimization" +msgstr "Niche āĻ…āĻĒāϟāĻŋāĻŽāĻžāχāĻœā§‡āĻļāύ" #: src/SUMMARY.md:114 msgid "Rc" @@ -407,11 +406,11 @@ msgstr "Filesystem Hierarchy" #: src/SUMMARY.md:120 msgid "Luhn Algorithm" -msgstr "Luhn āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ" +msgstr "āϞ⧁āύ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ" #: src/SUMMARY.md:121 msgid "Strings and Iterators" -msgstr "Strings and Iterators" +msgstr "Strings āĻāĻŦāĻ‚ Iterators" #: src/SUMMARY.md:124 msgid "Day 3: Morning" @@ -419,15 +418,15 @@ msgstr "āϤ⧃āĻ¤ā§€ā§Ÿ āĻĻāĻŋāύāσ āϏāĻ•āĻžāϞ" #: src/SUMMARY.md:129 msgid "Generics" -msgstr "Generics" +msgstr "āĻœā§‡āύ⧇āϰāĻŋāĻ•āϏ" #: src/SUMMARY.md:130 msgid "Generic Data Types" -msgstr "āϏāĻžāϧāĻžāϰāĻŖ āĻĄā§‡āϟāĻž āϧāϰāĻŖ" +msgstr "āĻœā§‡āύ⧇āϰāĻŋāĻ• āĻĄā§‡āϟāĻž āϟāĻžāχāĻĒ" #: src/SUMMARY.md:131 msgid "Generic Methods" -msgstr "āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞ⧋" +msgstr "āĻœā§‡āύ⧇āϰāĻŋāĻ• āĻŽā§‡āĻĨāĻĄ-āϏāĻŽā§‚āĻš" #: src/SUMMARY.md:132 msgid "Monomorphization" @@ -447,7 +446,7 @@ msgstr "Deriving Traits" #: src/SUMMARY.md:136 msgid "Default Methods" -msgstr "āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĒāĻĻā§āϧāϤāĻŋ" +msgstr "āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŽā§‡āĻĨāĻĄ-āϏāĻŽā§‚āĻš" #: src/SUMMARY.md:137 msgid "Trait Bounds" @@ -471,11 +470,11 @@ msgstr "FromIterator" #: src/SUMMARY.md:142 msgid "From and Into" -msgstr "From and Into" +msgstr "From āĻāĻŦāĻ‚ Into" #: src/SUMMARY.md:143 msgid "Read and Write" -msgstr "Read and Write" +msgstr "Read āĻāĻŦāĻ‚ Write" #: src/SUMMARY.md:144 msgid "Drop" @@ -483,7 +482,7 @@ msgstr "Drop" #: src/SUMMARY.md:145 msgid "Default" -msgstr "āĻĄāĻŋāĻĢāĻ˛ā§āϟ" +msgstr "Default" #: src/SUMMARY.md:146 msgid "Operators: Add, Mul, ..." @@ -503,7 +502,7 @@ msgstr "āϤ⧃āĻ¤ā§€ā§Ÿ āĻĻāĻŋāύāσ āĻŦāĻŋāĻ•āĻžāϞ" #: src/SUMMARY.md:153 msgid "Error Handling" -msgstr "āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž" +msgstr "āĻ¤ā§āϰ⧁āϟāĻŋ āϏāĻžāĻŽāϞāĻžāύ⧋" #: src/SUMMARY.md:154 msgid "Panics" @@ -519,31 +518,31 @@ msgstr "āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āĻāϰāϰ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞ #: src/SUMMARY.md:157 msgid "Propagating Errors with ?" -msgstr "āĻ•āĻŋāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒā§āϰāϚāĻžāϰ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇?" +msgstr "āĻāϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ⧇ āĻāϰāϰ/āĻ¤ā§āϰ⧁āϟāĻŋ āĻšāĻ¸ā§āϤāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻž ?" #: src/SUMMARY.md:158 msgid "Converting Error Types" -msgstr "āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒā§āϰāĻ•āĻžāϰ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ" +msgstr "āĻāϰāϰ⧇āϰ āϟāĻžāχāĻĒ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ" #: src/SUMMARY.md:160 msgid "Deriving Error Enums" -msgstr "Enums āĻ¤ā§āϰ⧁āϟāĻŋ āφāĻšāϰāĻŖ" +msgstr "āĻāϰāϰ⧇āϰ āχāύāĻžāĻŽāϗ⧁āϞ⧋ āĻŦ⧇āϰ āĻ•āϰāĻž" #: src/SUMMARY.md:161 msgid "Dynamic Error Types" -msgstr "āĻ—āϤāĻŋāĻļā§€āϞ āĻ¤ā§āϰ⧁āϟāĻŋāϰ āϧāϰāύ" +msgstr "āĻĄāĻžā§ŸāύāĻžāĻŽāĻŋāĻ• āĻ¤ā§āϰ⧁āϟāĻŋāϰ āϧāϰāύ" #: src/SUMMARY.md:162 msgid "Adding Context to Errors" -msgstr "āĻ¤ā§āϰ⧁āϟāĻŋāϤ⧇ āĻĒā§āϰāϏāĻ™ā§āĻ— āϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻšā§āϛ⧇" +msgstr "āĻ¤ā§āϰ⧁āϟāĻŋāϤ⧇ āĻ•āĻ¨ā§āĻŸā§‡āĻ•ā§āϏāϟ āϝ⧋āĻ— āĻ•āϰāĻž" #: src/SUMMARY.md:163 msgid "Testing" -msgstr "āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž" +msgstr "āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚" #: src/SUMMARY.md:164 msgid "Unit Tests" -msgstr "āχāωāύāĻŋāϟ āĻĒāϰ⧀āĻ•ā§āώāĻž" +msgstr "āχāωāύāĻŋāϟ āĻŸā§‡āĻ¸ā§āϟ" #: src/SUMMARY.md:165 msgid "Test Modules" @@ -551,7 +550,8 @@ msgstr "āĻŸā§‡āĻ¸ā§āϟ āĻŽāĻĄāĻŋāωāϞ" #: src/SUMMARY.md:166 msgid "Documentation Tests" -msgstr "āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĒāϰ⧀āĻ•ā§āώāĻž" +msgstr "āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻŸā§‡āĻ¸ā§āϟ" + #: src/SUMMARY.md:167 msgid "Integration Tests" @@ -559,19 +559,19 @@ msgstr "āχāĻ¨ā§āϟāĻŋāĻ—ā§āϰ⧇āĻļāύ āĻŸā§‡āĻ¸ā§āϟ" #: src/SUMMARY.md:168 msgid "Useful crates" -msgstr "āĻĻāϰāĻ•āĻžāϰ⧀ crates" +msgstr "āĻĻāϰāĻ•āĻžāϰ⧀ āĻ•ā§āϰ⧇āϟ-āϏāĻŽā§‚āĻš" #: src/SUMMARY.md:169 msgid "Unsafe Rust" -msgstr "āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ Rust" +msgstr "āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ āϰāĻžāĻ¸ā§āϟ" #: src/SUMMARY.md:170 msgid "Dereferencing Raw Pointers" -msgstr "āĻĄāĻŋāϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāĻŋāĻ‚ Raw Pointers" +msgstr "āϰ āĻĒā§Ÿā§‡āĻ¨ā§āϟāĻžāϰ āĻĄāĻŋ-āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ•āϰāĻž" #: src/SUMMARY.md:171 msgid "Mutable Static Variables" -msgstr "āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϝ⧋āĻ—ā§āϝ Static Variables" +msgstr "āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϝ⧋āĻ—ā§āϝ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏ" #: src/SUMMARY.md:172 msgid "Unions" @@ -591,7 +591,7 @@ msgstr "āĻŦāĻšāĻŋāϰāĻžāĻ—āϤ āĻĢāĻžāĻ‚āĻļāύ" #: src/SUMMARY.md:176 msgid "Implementing Unsafe Traits" -msgstr "āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ-Traits āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ" +msgstr "āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ Traits āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ" #: src/SUMMARY.md:178 msgid "Safe FFI Wrapper" @@ -611,11 +611,11 @@ msgstr "āĻ—āĻ āύ⧇āϰ āύāĻŋ⧟āĻŽ" #: src/SUMMARY.md:188 msgid "Binary" -msgstr "Binary" +msgstr "āĻŦāĻžāχāύāĻžāϰāĻŋ" #: src/SUMMARY.md:189 msgid "Library" -msgstr "Library" +msgstr "āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ" #: src/SUMMARY.md:190 msgid "AIDL" @@ -631,7 +631,7 @@ msgstr "āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ" #: src/SUMMARY.md:193 msgid "Server" -msgstr "Server-āϏāĻžāĻ°ā§āĻ­āĻžāϰ" +msgstr "āϏāĻžāĻ°ā§āĻ­āĻžāϰ" #: src/SUMMARY.md:194 msgid "Deploy" @@ -639,7 +639,7 @@ msgstr "āĻ¸ā§āĻĨāĻžāĻĒāύ" #: src/SUMMARY.md:195 msgid "Client" -msgstr "Client-āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ" +msgstr "āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ" #: src/SUMMARY.md:196 msgid "Changing API" @@ -651,7 +651,7 @@ msgstr "Logging" #: src/SUMMARY.md:198 msgid "Interoperability" -msgstr "Interoperability" +msgstr "āφāĻ¨ā§āϤāσāĻ•āĻžāĻ°ā§āϝāĻ•ā§āώāĻŽāϤāĻž" #: src/SUMMARY.md:199 msgid "With C" @@ -691,15 +691,15 @@ msgstr "alloc" #: src/SUMMARY.md:215 msgid "Microcontrollers" -msgstr "Microcontrollers-āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ" +msgstr "āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ" #: src/SUMMARY.md:216 msgid "Raw MMIO" -msgstr "Raw MMIO" +msgstr "" #: src/SUMMARY.md:217 msgid "PACs" -msgstr "PAC āϗ⧁āϞ⧋" +msgstr "" #: src/SUMMARY.md:218 msgid "HAL Crates" @@ -715,31 +715,31 @@ msgstr "" #: src/SUMMARY.md:221 msgid "embedded-hal" -msgstr "embedded-hal" +msgstr "" #: src/SUMMARY.md:222 msgid "probe-rs, cargo-embed" -msgstr "probe-rs, cargo-embed" +msgstr "" #: src/SUMMARY.md:223 msgid "Debugging" -msgstr "āϭ⧁āϞ āϏāϰāĻžāύ⧋" +msgstr "āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚" #: src/SUMMARY.md:224 src/SUMMARY.md:242 msgid "Other Projects" -msgstr "āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϏāĻŽā§‚āĻš" +msgstr "" #: src/SUMMARY.md:226 msgid "Compass" -msgstr "āĻ•āĻŽā§āĻĒāĻžāϏ" +msgstr "" #: src/SUMMARY.md:228 msgid "Bare Metal: Afternoon" -msgstr "Bare Metal: āĻŦāĻŋāĻ•āĻžāϞ" +msgstr "" #: src/SUMMARY.md:230 msgid "Application Processors" -msgstr "āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ Processors" +msgstr "āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒā§āϰāϏ⧇āϏāϰ" #: src/SUMMARY.md:231 msgid "Inline Assembly" @@ -751,7 +751,7 @@ msgstr "MMIO" #: src/SUMMARY.md:233 msgid "Let's Write a UART Driver" -msgstr "āϚāϞ⧋ āĻāĻ•āϟāĻŋ UART Driver āϞāĻŋāĻ–āĻŋ" +msgstr "āϚāϞ⧁āύ āĻāĻ•āϟāĻŋ UART Driver āϞāĻŋāĻ–āĻŋ" #: src/SUMMARY.md:234 msgid "More Traits" @@ -759,7 +759,7 @@ msgstr "āφāϰāĻ“ Traits" #: src/SUMMARY.md:235 msgid "A Better UART Driver" -msgstr "āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤāϰ UART Driver" +msgstr "āĻāĻ•āϟāĻŋ āωāĻ¨ā§āύāϤāϰ UART āĻĄā§āϰāĻžāχāĻ­āĻžāϰ" #: src/SUMMARY.md:236 msgid "Bitflags" @@ -767,19 +767,19 @@ msgstr "Bitflags" #: src/SUMMARY.md:237 msgid "Multiple Registers" -msgstr "āĻāĻ•āĻžāϧāĻŋāĻ• Registers" +msgstr "āĻāĻ•āĻžāϧāĻŋāĻ• āϰ⧇āϜāĻŋāĻ¸ā§āϟāĻžāϰāϏ" #: src/SUMMARY.md:238 msgid "Driver" -msgstr "Driver" +msgstr "" #: src/SUMMARY.md:239 src/SUMMARY.md:241 msgid "Using It" -msgstr "āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇" +msgstr "" #: src/SUMMARY.md:243 msgid "Useful Crates" -msgstr "āωāĻĒāĻ•āĻžāϰ⧀ Crates" +msgstr "āωāĻĒāĻ•āĻžāϰ⧀ āĻ•ā§āϰ⧇āϟāϏāĻŽā§‚āĻš" #: src/SUMMARY.md:244 msgid "zerocopy" @@ -815,7 +815,7 @@ msgstr "Concurrency: āϏāĻ•āĻžāϞ" #: src/SUMMARY.md:260 msgid "Threads" -msgstr "Threads" +msgstr "" #: src/SUMMARY.md:261 msgid "Scoped Threads" @@ -823,15 +823,15 @@ msgstr "āĻ¸ā§āϕ⧋āĻĒāĻĄ Threads" #: src/SUMMARY.md:262 msgid "Channels" -msgstr "Channels-āĻšā§āϝāĻžāύ⧇āϞ" +msgstr "" #: src/SUMMARY.md:263 msgid "Unbounded Channels" -msgstr "āϏ⧀āĻŽāĻžāĻšā§€āύ Channels" +msgstr "" #: src/SUMMARY.md:264 msgid "Bounded Channels" -msgstr "āφāĻŦāĻĻā§āϧ Channels" +msgstr "" #: src/SUMMARY.md:265 msgid "Send and Sync" @@ -851,7 +851,7 @@ msgstr "āωāĻĻāĻžāĻšāϰāĻŖāϏāĻŽā§‚āĻš" #: src/SUMMARY.md:269 msgid "Shared State" -msgstr "Shared State" +msgstr "" #: src/SUMMARY.md:270 msgid "Arc" @@ -871,7 +871,7 @@ msgstr "āĻŽāĻžāĻ˛ā§āϟāĻŋ āĻĨā§āϰ⧇āĻĄā§‡āĻĄ āϞāĻŋāĻ™ā§āĻ• āĻšā§‡āĻ•āĻžāϰ #: src/SUMMARY.md:277 msgid "Concurrency: Afternoon" -msgstr "Concurrency: āĻŦāĻŋāĻ•āĻžāϞ" +msgstr "" #: src/SUMMARY.md:279 msgid "Async Basics" @@ -887,7 +887,7 @@ msgstr "āĻ­āĻŦāĻŋāĻˇā§āĻ¯ā§Ž" #: src/SUMMARY.md:282 msgid "Runtimes" -msgstr "āϰāĻžāύāϟāĻžāχāĻŽ" +msgstr "" #: src/SUMMARY.md:283 msgid "Tokio" @@ -899,15 +899,15 @@ msgstr "Tasks-āĻ•āĻ°ā§āĻŽ" #: src/SUMMARY.md:285 msgid "Async Channels" -msgstr "Async āĻšā§āϝāĻžāύ⧇āϞ" +msgstr "" #: src/SUMMARY.md:287 msgid "Join" -msgstr "āϝ⧋āĻ—āĻĻāĻžāύ" +msgstr "" #: src/SUMMARY.md:288 msgid "Select" -msgstr "āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ" +msgstr "" #: src/SUMMARY.md:289 msgid "Pitfalls" @@ -915,7 +915,7 @@ msgstr "āĻ•ā§āώāϤāĻŋ" #: src/SUMMARY.md:290 msgid "Blocking the Executor" -msgstr "āύāĻŋāĻ°ā§āĻŦāĻžāĻšāĻ•āϕ⧇ āĻŦā§āϞāĻ• āĻ•āϰāĻž" +msgstr "āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟāϰ āĻŦā§āϞāĻ• āĻ•āϰāĻž" #: src/SUMMARY.md:291 msgid "Pin" @@ -991,15 +991,11 @@ msgstr "Concurrency: āĻŦāĻŋāĻ•āĻžāϞ" #: src/welcome.md:1 msgid "# Welcome to Comprehensive Rust đŸĻ€" -msgstr "āĻ¸ā§āĻŦāĻžāĻ—āϤāĻŽ Comprehensive Rust đŸĻ€ āĻ" +msgstr "# Comprehensive Rust đŸĻ€ āĻ āĻ¸ā§āĻŦāĻžāĻ—āϤāĻŽ" #: src/welcome.md:3 -msgid "" -"[![Build workflow](https://img.shields.io/github/actions/workflow/status/google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/google/" -"comprehensive-rust/actions/workflows/build.yml)" -msgstr "" -"[![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)" +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)" +msgstr "[![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)" #: src/welcome.md:3 msgid "Build workflow" @@ -1007,15 +1003,11 @@ msgstr "āĻ•āĻ°ā§āĻŽāĻĒā§āϰāĻŦāĻžāĻš āϤ⧈āϰāĻŋ" #: src/welcome.md:3 msgid "" -"[![Build workflow](https://img.shields.io/github/actions/workflow/status/google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/google/" -"comprehensive-rust/actions/workflows/build.yml)\n" -"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/" -"graphs/contributors)" +"[![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)\n" +"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/graphs/contributors)" msgstr "" -"[![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)\n" -"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/" -"graphs/contributors)" +"[![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)\n" +"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/graphs/contributors)" #: src/welcome.md:4 msgid "GitHub contributors" @@ -1023,12 +1015,10 @@ msgstr "GitHub āĻ…āĻŦāĻĻāĻžāύāĻ•āĻžāϰ⧀" #: src/welcome.md:4 msgid "" -"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/" -"graphs/contributors)\n" +"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/graphs/contributors)\n" "[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/stargazers)" msgstr "" -"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/" -"graphs/contributors)\n" +"[![GitHub contributors](https://img.shields.io/github/contributors/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/graphs/contributors)\n" "[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/stargazers)" #: src/welcome.md:5 @@ -1036,10 +1026,8 @@ msgid "GitHub stars" msgstr "GitHub stars" #: src/welcome.md:5 -msgid "" -"[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/stargazers)" -msgstr "" -"[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/stargazers)" +msgid "[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/stargazers)" +msgstr "[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-rust/stargazers)" #: src/welcome.md:7 msgid "" @@ -1047,17 +1035,17 @@ msgid "" "the full spectrum of Rust, from basic syntax to advanced topics like generics\n" "and error handling. It also includes Android-specific content on the last day." msgstr "" -"āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϤāĻŋāύ āĻĻāĻŋāύ⧇āϰ Rust āϕ⧋āĻ°ā§āϏ āϝāĻž āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āϟāĻŋāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ āϕ⧋āĻ°ā§āϏ āĻ•āĻ­āĻžāϰ āĻ•āϰ⧇\n" -"Rust-āĻāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻ°ā§āĻŖāĻžāϞ⧀, āĻŽā§ŒāϞāĻŋāĻ• āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻĨ⧇āϕ⧇ āĻœā§‡āύ⧇āϰāĻŋāϕ⧇āϰ āĻŽāϤ⧋ āωāĻ¨ā§āύāϤ āĻŦāĻŋāώāϝāĻŧ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ\n" -"āĻāĻŦāĻ‚ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻžāĨ¤ āĻāϟāĻŋ āĻļ⧇āώ āĻĻāĻŋāύ⧇ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻŽāĻ—ā§āϰ⧀āĻ“ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤" +"āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϤāĻŋāύ āĻĻāĻŋāύ⧇āϰ āϰāĻžāĻ¸ā§āϟ āϕ⧋āĻ°ā§āϏ āϝāĻž āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āϟāĻŋāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ āϕ⧋āĻ°ā§āϏ āĻ•āĻ­āĻžāϰ āĻ•āϰ⧇\n" +"Rust-āĻāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻĒ⧇āĻ•āĻŸā§āϰāĻžāĻŽ, āĻŽā§ŒāϞāĻŋāĻ• āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻĨ⧇āϕ⧇ āĻœā§‡āύ⧇āϰāĻŋāϕ⧇ āĻāĻŦāĻ‚ āĻāϰāϰ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āĻāϰ āĻŽāϤ⧋ \n" +"āωāĻ¨ā§āύāϤ āĻŦāĻŋāώāϝāĻŧ āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤ āĻāϟāĻŋ āĻļ⧇āώ āĻĻāĻŋāύ⧇ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻŽāĻ—ā§āϰ⧀āĻ“ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤" #: src/welcome.md:11 msgid "" "The goal of the course is to teach you Rust. We assume you don't know anything\n" "about Rust and hope to:" msgstr "" -"āϕ⧋āĻ°ā§āϏ⧇āϰ āϞāĻ•ā§āĻˇā§āϝ āĻšāϞ āφāĻĒāύāĻžāϕ⧇ Rust āĻļ⧇āĻ–āĻžāύ⧋āĨ¤ āφāĻŽāϰāĻž āϧāϰ⧇ āύāĻŋāϞāĻžāĻŽ āφāĻĒāύāĻŋ āĻ•āĻŋāϛ⧁āχ āϜāĻžāύ⧇āύ āύāĻž\n" -"Rust āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻŦāĻ‚ āφāĻļāĻž āĻ•āϰāĻŋ:" +"āϕ⧋āĻ°ā§āϏ⧇āϰ āϞāĻ•ā§āĻˇā§āϝ āĻšāϞ āφāĻĒāύāĻžāϕ⧇ āϰāĻžāĻ¸ā§āϟ āĻļ⧇āĻ–āĻžāύ⧋āĨ¤ āφāĻŽāϰāĻž āϧāϰ⧇ āύāĻŋāϞāĻžāĻŽ āφāĻĒāύāĻŋ āĻ•āĻŋāϛ⧁āχ āϜāĻžāύ⧇āύ āύāĻž\n" +"āϰāĻžāĻ¸ā§āϟ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻŦāĻ‚ āφāĻļāĻž āĻ•āϰāĻŋāσ" #: src/welcome.md:14 msgid "" @@ -1065,17 +1053,17 @@ msgid "" "* Enable you to modify existing programs and write new programs in Rust.\n" "* Show you common Rust idioms." msgstr "" -"* āφāĻĒāύāĻžāϕ⧇ Rust āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻāĻŦāĻ‚ āĻ­āĻžāώāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻŦā§‹āĻāĻžāĻŦā§‹āĨ¤\n" -"* āφāĻĒāύāĻžāϕ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϗ⧁āϞāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ Rust āĻ āύāϤ⧁āύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϞāĻŋāĻ–āϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻŦā§‹āĨ¤\n" -"* āφāĻĒāύāĻžāϕ⧇ āϏāĻžāϧāĻžāϰāĻŖ Rust āĻŦāĻžāĻ—āϧāĻžāϰāĻž āĻĻ⧇āĻ–āĻžāĻŦā§‹āĨ¤" +"* āφāĻĒāύāĻžāϕ⧇ āϰāĻžāĻ¸ā§āϟ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻāĻŦāĻ‚ āĻ­āĻžāώāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻŦā§‹āĻāĻžā§ŸāĨ¤\n" +"* āφāĻĒāύāĻžāϕ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϗ⧁āϞāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āϰāĻžāĻ¸ā§āϟ āĻ āύāϤ⧁āύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϞāĻŋāĻ–āϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇āĨ¤\n" +"* āφāĻĒāύāĻžāϕ⧇ āϏāĻžāϧāĻžāϰāĻŖ āϰāĻžāĻ¸ā§āϟ āχāĻĄāĻŋ⧟āĻŽāϏ āĻĻ⧇āĻ–āĻžā§ŸāĨ¤" #: src/welcome.md:18 msgid "" "The first three days show you the fundamentals of Rust. Following this, you're\n" "invited to dive into one or more spezialized topics:" msgstr "" -"āĻĒā§āϰāĻĨāĻŽ āϤāĻŋāύ āĻĻāĻŋāύ āφāĻĒāύāĻžāϕ⧇ Rust āĻāϰ āĻŽā§ŒāϞāĻŋāĻ•āĻ¤ā§āĻŦ āĻĻ⧇āĻ–āĻžāĻŦā§‹āĨ¤ āĻāχ āĻ…āύ⧁āϝāĻžā§Ÿā§€ āφāĻĒāύāĻŋ\n" -"āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻŦāĻŋāĻļ⧇āώāĻžāϝāĻŧāĻŋāϤ āĻŦāĻŋāώāϝāĻŧāϗ⧁āϞāĻŋāϤ⧇ āĻĄā§āĻŦ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻ¨ā§āĻ¤ā§āϰāĻŋāϤ:" +"āĻĒā§āϰāĻĨāĻŽ āϤāĻŋāύ āĻĻāĻŋāύ āφāĻĒāύāĻžāϕ⧇ āϰāĻžāĻ¸ā§āϟ āĻāϰ āĻŽā§ŒāϞāĻŋāĻ•āĻ¤ā§āĻŦ āĻĻ⧇āĻ–āĻžāĻŦā§‹āĨ¤ āĻāχ āĻ…āύ⧁āϝāĻžā§Ÿā§€ āφāĻĒāύāĻŋ\n" +"āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻŦāĻŋāĻļ⧇āώāĻžāϝāĻŧāĻŋāϤ āĻŦāĻŋāώāϝāĻŧāϗ⧁āϞāĻŋāϤ⧇ āĻĄā§āĻŦ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻ¨ā§āĻ¤ā§āϰāĻŋāϤāσ" #: src/welcome.md:21 msgid "" @@ -1101,15 +1089,15 @@ msgstr "" #: src/welcome.md:32 msgid "## Non-Goals" -msgstr "##āωāĻĻā§āĻĻ⧇āĻļā§āϝāĻšā§€āύ āϞāĻ•ā§āĻˇā§āϝāϏāĻŽā§‚āĻš" +msgstr "" #: src/welcome.md:34 msgid "" "Rust is a large language and we won't be able to cover all of it in a few days.\n" "Some non-goals of this course are:" msgstr "" -"Rust āĻāĻ•āϟāĻŋ āĻŦ⧃āĻšā§Ž āĻ­āĻžāώāĻž āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻ•āϝāĻŧ⧇āĻ• āĻĻāĻŋāύ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāϟāĻŋāϕ⧇ āĻ•āĻ­āĻžāϰ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻŦ āύāĻžāĨ¤\n" -"āĻāχ āϕ⧋āĻ°ā§āϏ⧇āϰ āĻ•āĻŋāϛ⧁ āωāĻĻā§āĻĻ⧇āĻļā§āϝāĻšā§€āύ-āϞāĻ•ā§āĻˇā§āϝ āĻšāϞāσ" +"āϰāĻžāĻ¸ā§āϟ āĻāĻ•āϟāĻŋ āĻŦ⧃āĻšā§Ž āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ˛ā§āϝāĻžāĻ‚āĻ—ā§ā§Ÿā§‡āϜ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻ•āϝāĻŧ⧇āĻ• āĻĻāĻŋāύ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāϟāĻŋāϕ⧇ āĻ•āĻ­āĻžāϰ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻŦ āύāĻžāĨ¤\n" +"āĻāχ āϕ⧋āĻ°ā§āϏ⧇āϰ āĻ•āĻŋāϛ⧁ āĻ…-āϞāĻ•ā§āĻˇā§āϝ āĻšāϞāσ" #: src/welcome.md:37 msgid "" @@ -1118,8 +1106,8 @@ msgid "" " Example](https://doc.rust-lang.org/rust-by-example/macros.html) instead." msgstr "" "* āĻļāĻŋāϖ⧁āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ macros āĻĄā§‡āϭ⧇āϞāĻĒ āĻ•āϰāϤ⧇ āĻšā§Ÿ, āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻĻ⧇āϖ⧁āύ [āĻ…āĻ§ā§āϝāĻžā§Ÿ 19.5 Rust āĻāϰ\n" -" āĻŦāχ āĻ](https://doc.rust-lang.org/book/ch19-06-macros.html) and [āωāĻĻāĻžāĻšāϰāĻŖ āĻāϰ āĻŽāĻ§ā§āϝāĻŽā§‡\n" -" Rust](https://doc.rust-lang.org/rust-by-example/macros.html) āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤" +" āĻŦāχ āĻ](https://doc.rust-lang.org/book/ch19-06-macros.html) āĻāĻŦāĻ‚ [āωāĻĻāĻžāĻšāϰāĻŖ āĻāϰ āĻŽāĻ§ā§āϝāĻŽā§‡\n" +" āϰāĻžāĻ¸ā§āϟ](https://doc.rust-lang.org/rust-by-example/macros.html) āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤" #: src/welcome.md:41 msgid "## Assumptions" @@ -1131,57 +1119,46 @@ msgid "" "typed language and we will sometimes make comparisons with C and C++ to better\n" "explain or contrast the Rust approach." msgstr "" -"āϕ⧋āĻ°ā§āϏāϟāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰ⧇ āϝ⧇ āφāĻĒāύāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻ•āϰāϤ⧇ āϜāĻžāύ⧇āύāĨ¤ Rust āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ\n" -"āϟāĻžāχāĻĒ āĻ•āϰāĻž āĻ­āĻžāώāĻž āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻ•āĻ–āύāĻ“ āĻ•āĻ–āύāĻ“ C āĻāĻŦāĻ‚ C++ āĻāϰ āϏāĻžāĻĨ⧇ āφāϰāĻ“ āĻ­āĻžāϞ āϤ⧁āϞāύāĻž āĻ•āϰāĻŦ\n" -" Rust āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻŦāĻž āĻŦ⧈āϏāĻžāĻĻ⧃āĻļā§āϝāĨ¤" +"āϕ⧋āĻ°ā§āϏāϟāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰ⧇ āϝ⧇ āφāĻĒāύāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻ•āϰāϤ⧇ āϜāĻžāύ⧇āύāĨ¤ Rust āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ•āĻžāϞāĻŋ\n" +"āϟāĻžāχāĻĒāĻĄ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ˛ā§āϝāĻžāĻ‚āĻ—ā§ā§Ÿā§‡āϜ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻ•āĻ–āύāĻ“ āĻ•āĻ–āύāĻ“ C āĻāĻŦāĻ‚ C++ āĻāϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻž āĻ•āϰāĻŦ āĻ­āĻžāϞ⧋āĻ­āĻžāĻŦ⧇ \n" +" āĻŦā§āϝāĻžāĻ–āĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻĨāĻŦāĻž āĻŦāĻŋāĻĒāϰ⧀āϤ Rust āĻĒāĻĻā§āϧāϤāĻŋāĨ¤" #: src/welcome.md:47 msgid "" "If you know how to program in a dynamically typed language such as Python or\n" "JavaScript, then you will be able to follow along just fine too." msgstr "" -"āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϜāĻžāύ⧇āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ—āϤāĻŋāĻļā§€āϞ āϟāĻžāχāĻĒ āĻ•āϰāĻž āĻ­āĻžāώāĻžāϝāĻŧ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϝ⧇āĻŽāύ āĻĒāĻžāχāĻĨāύ āĻŦāĻž\n" -"āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āϖ⧁āĻŦ āĻ­āĻžāϞ āĻŦāϰāĻžāĻŦāϰ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻŦ⧇." +"āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϜāĻžāύ⧇āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ•ā§āϝāĻžāϞāĻŋ āϟāĻžāχāĻĒāĻĄ āĻ­āĻžāώāĻžāϝāĻŧ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϝ⧇āĻŽāύ āĻĒāĻžāχāĻĨāύ āĻŦāĻž\n" +"āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āϖ⧁āĻŦ āĻ­āĻžāϞ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻŦ⧇āύāĨ¤" -#: src/welcome.md:50 src/cargo/rust-ecosystem.md:19 src/cargo/code-samples.md:22 src/cargo/running-locally.md:68 src/welcome-day-1.md:14 -#: src/welcome-day-1/what-is-rust.md:19 src/hello-world.md:20 src/hello-world/small-example.md:21 src/why-rust.md:9 src/why-rust/compile-time.md:14 -#: src/why-rust/runtime.md:8 src/why-rust/modern.md:19 src/basic-syntax/scalar-types.md:19 src/basic-syntax/compound-types.md:28 src/basic-syntax/slices.md:18 -#: src/basic-syntax/string-slices.md:25 src/basic-syntax/functions.md:33 src/basic-syntax/rustdoc.md:22 src/basic-syntax/methods.md:32 -#: src/basic-syntax/functions-interlude.md:25 src/exercises/day-1/morning.md:9 src/exercises/day-1/for-loops.md:90 src/basic-syntax/variables.md:15 -#: src/basic-syntax/type-inference.md:24 src/basic-syntax/static-and-const.md:46 src/basic-syntax/scopes-shadowing.md:23 src/memory-management/stack.md:26 -#: src/memory-management/rust.md:12 src/ownership/move-semantics.md:20 src/ownership/moves-function-calls.md:18 src/ownership/copy-clone.md:33 -#: src/ownership/borrowing.md:25 src/ownership/shared-unique-borrows.md:23 src/ownership/lifetimes-function-calls.md:27 -#: src/ownership/lifetimes-data-structures.md:23 src/exercises/day-1/afternoon.md:9 src/exercises/day-1/book-library.md:100 src/structs/tuple-structs.md:35 -#: src/structs/field-shorthand.md:25 src/enums.md:31 src/enums/variant-payloads.md:33 src/enums/sizes.md:27 src/methods.md:28 src/methods/receiver.md:23 -#: src/methods/example.md:44 src/pattern-matching.md:23 src/pattern-matching/destructuring-enums.md:33 src/pattern-matching/destructuring-structs.md:21 -#: src/pattern-matching/destructuring-arrays.md:19 src/pattern-matching/match-guards.md:20 src/exercises/day-2/morning.md:9 -#: src/exercises/day-2/points-polygons.md:115 src/control-flow/blocks.md:40 src/control-flow/if-expressions.md:33 src/control-flow/if-let-expressions.md:21 -#: src/control-flow/while-let-expressions.md:24 src/control-flow/for-expressions.md:23 src/control-flow/loop-expressions.md:25 -#: src/control-flow/match-expressions.md:26 src/std.md:23 src/std/option-result.md:16 src/std/string.md:28 src/std/vec.md:35 src/std/hashmap.md:36 -#: src/std/box.md:32 src/std/box-recursive.md:31 src/std/rc.md:29 src/modules.md:26 src/modules/visibility.md:37 src/modules/filesystem.md:42 -#: src/exercises/day-2/afternoon.md:5 src/generics/data-types.md:19 src/generics/methods.md:23 src/traits/trait-objects.md:70 src/traits/default-methods.md:30 -#: src/traits/trait-bounds.md:33 src/traits/impl-trait.md:21 src/traits/iterator.md:30 src/traits/from-iterator.md:15 src/traits/from-into.md:27 -#: src/traits/drop.md:32 src/traits/default.md:38 src/traits/operators.md:24 src/traits/closures.md:23 src/exercises/day-3/morning.md:5 -#: src/error-handling/result.md:25 src/error-handling/try-operator.md:46 src/error-handling/converting-error-types-example.md:48 -#: src/error-handling/deriving-error-enums.md:37 src/error-handling/dynamic-errors.md:34 src/error-handling/error-contexts.md:33 src/unsafe.md:26 -#: src/unsafe/raw-pointers.md:25 src/unsafe/mutable-static-variables.md:30 src/unsafe/unions.md:19 src/unsafe/writing-unsafe-functions.md:31 -#: src/unsafe/extern-functions.md:19 src/unsafe/unsafe-traits.md:28 src/exercises/day-3/afternoon.md:5 src/android/interoperability/with-c/rust.md:81 -#: src/exercises/android/morning.md:10 src/bare-metal/minimal.md:15 src/bare-metal/alloc.md:37 src/bare-metal/microcontrollers.md:23 -#: src/bare-metal/microcontrollers/mmio.md:62 src/bare-metal/microcontrollers/pacs.md:47 src/bare-metal/microcontrollers/hals.md:37 -#: src/bare-metal/microcontrollers/board-support.md:26 src/bare-metal/microcontrollers/type-state.md:30 src/bare-metal/microcontrollers/embedded-hal.md:17 -#: src/bare-metal/microcontrollers/probe-rs.md:14 src/bare-metal/microcontrollers/debugging.md:25 src/bare-metal/microcontrollers/other-projects.md:16 -#: src/exercises/bare-metal/morning.md:5 src/bare-metal/aps.md:7 src/bare-metal/aps/inline-assembly.md:41 src/bare-metal/aps/mmio.md:7 -#: src/bare-metal/aps/uart.md:53 src/bare-metal/aps/uart/traits.md:22 src/bare-metal/aps/better-uart.md:24 src/bare-metal/aps/better-uart/bitflags.md:35 -#: src/bare-metal/aps/better-uart/registers.md:39 src/bare-metal/aps/better-uart/driver.md:62 src/bare-metal/aps/better-uart/using.md:49 -#: src/bare-metal/aps/logging.md:48 src/bare-metal/aps/logging/using.md:44 src/bare-metal/useful-crates/zerocopy.md:43 -#: src/bare-metal/useful-crates/aarch64-paging.md:26 src/bare-metal/useful-crates/buddy_system_allocator.md:24 src/bare-metal/useful-crates/tinyvec.md:21 -#: src/bare-metal/useful-crates/spin.md:21 src/bare-metal/android/vmbase.md:19 src/exercises/bare-metal/afternoon.md:5 src/concurrency/threads.md:28 -#: src/concurrency/scoped-threads.md:35 src/concurrency/channels.md:25 src/concurrency/send-sync.md:18 src/concurrency/send-sync/send.md:11 -#: src/concurrency/send-sync/sync.md:12 src/concurrency/shared_state/arc.md:27 src/concurrency/shared_state/mutex.md:29 -#: src/concurrency/shared_state/example.md:21 src/exercises/concurrency/morning.md:10 src/async/async-await.md:23 src/async/futures.md:30 -#: src/async/runtimes.md:18 src/async/runtimes/tokio.md:31 src/async/tasks.md:51 src/async/channels.md:33 src/async/control-flow/join.md:34 -#: src/async/control-flow/select.md:59 src/async/pitfalls/blocking-executor.md:27 src/async/pitfalls/pin.md:66 src/exercises/concurrency/afternoon.md:11 -#: src/exercises/concurrency/dining-philosophers-async.md:75 +#: src/welcome.md:50 src/cargo/rust-ecosystem.md:19 src/cargo/code-samples.md:22 src/cargo/running-locally.md:68 src/welcome-day-1.md:14 src/welcome-day-1/what-is-rust.md:19 src/hello-world.md:20 +#: src/hello-world/small-example.md:21 src/why-rust.md:9 src/why-rust/compile-time.md:14 src/why-rust/runtime.md:8 src/why-rust/modern.md:19 src/basic-syntax/scalar-types.md:19 +#: src/basic-syntax/compound-types.md:28 src/basic-syntax/slices.md:18 src/basic-syntax/string-slices.md:25 src/basic-syntax/functions.md:33 src/basic-syntax/rustdoc.md:22 src/basic-syntax/methods.md:32 +#: src/basic-syntax/functions-interlude.md:25 src/exercises/day-1/morning.md:9 src/exercises/day-1/for-loops.md:90 src/basic-syntax/variables.md:15 src/basic-syntax/type-inference.md:24 +#: src/basic-syntax/static-and-const.md:46 src/basic-syntax/scopes-shadowing.md:23 src/memory-management/stack.md:26 src/memory-management/rust.md:12 src/ownership/move-semantics.md:20 +#: src/ownership/moves-function-calls.md:18 src/ownership/copy-clone.md:33 src/ownership/borrowing.md:25 src/ownership/shared-unique-borrows.md:23 src/ownership/lifetimes-function-calls.md:27 +#: src/ownership/lifetimes-data-structures.md:23 src/exercises/day-1/afternoon.md:9 src/exercises/day-1/book-library.md:100 src/structs/tuple-structs.md:35 src/structs/field-shorthand.md:25 src/enums.md:31 +#: src/enums/variant-payloads.md:33 src/enums/sizes.md:27 src/methods.md:28 src/methods/receiver.md:23 src/methods/example.md:44 src/pattern-matching.md:23 src/pattern-matching/destructuring-enums.md:33 +#: src/pattern-matching/destructuring-structs.md:21 src/pattern-matching/destructuring-arrays.md:19 src/pattern-matching/match-guards.md:20 src/exercises/day-2/morning.md:9 +#: src/exercises/day-2/points-polygons.md:115 src/control-flow/blocks.md:40 src/control-flow/if-expressions.md:33 src/control-flow/if-let-expressions.md:21 src/control-flow/while-let-expressions.md:24 +#: src/control-flow/for-expressions.md:23 src/control-flow/loop-expressions.md:25 src/control-flow/match-expressions.md:26 src/std.md:23 src/std/option-result.md:16 src/std/string.md:28 src/std/vec.md:35 +#: src/std/hashmap.md:36 src/std/box.md:32 src/std/box-recursive.md:31 src/std/rc.md:29 src/modules.md:26 src/modules/visibility.md:37 src/modules/filesystem.md:42 src/exercises/day-2/afternoon.md:5 +#: src/generics/data-types.md:19 src/generics/methods.md:23 src/traits/trait-objects.md:70 src/traits/default-methods.md:30 src/traits/trait-bounds.md:33 src/traits/impl-trait.md:21 src/traits/iterator.md:30 +#: src/traits/from-iterator.md:15 src/traits/from-into.md:27 src/traits/drop.md:32 src/traits/default.md:38 src/traits/operators.md:24 src/traits/closures.md:23 src/exercises/day-3/morning.md:5 +#: src/error-handling/result.md:25 src/error-handling/try-operator.md:46 src/error-handling/converting-error-types-example.md:48 src/error-handling/deriving-error-enums.md:37 +#: src/error-handling/dynamic-errors.md:34 src/error-handling/error-contexts.md:33 src/unsafe.md:26 src/unsafe/raw-pointers.md:25 src/unsafe/mutable-static-variables.md:30 src/unsafe/unions.md:19 +#: src/unsafe/writing-unsafe-functions.md:31 src/unsafe/extern-functions.md:19 src/unsafe/unsafe-traits.md:28 src/exercises/day-3/afternoon.md:5 src/android/interoperability/with-c/rust.md:81 +#: src/exercises/android/morning.md:10 src/bare-metal/minimal.md:15 src/bare-metal/alloc.md:37 src/bare-metal/microcontrollers.md:23 src/bare-metal/microcontrollers/mmio.md:62 +#: src/bare-metal/microcontrollers/pacs.md:47 src/bare-metal/microcontrollers/hals.md:37 src/bare-metal/microcontrollers/board-support.md:26 src/bare-metal/microcontrollers/type-state.md:30 +#: src/bare-metal/microcontrollers/embedded-hal.md:17 src/bare-metal/microcontrollers/probe-rs.md:14 src/bare-metal/microcontrollers/debugging.md:25 src/bare-metal/microcontrollers/other-projects.md:16 +#: src/exercises/bare-metal/morning.md:5 src/bare-metal/aps.md:7 src/bare-metal/aps/inline-assembly.md:41 src/bare-metal/aps/mmio.md:7 src/bare-metal/aps/uart.md:53 src/bare-metal/aps/uart/traits.md:22 +#: src/bare-metal/aps/better-uart.md:24 src/bare-metal/aps/better-uart/bitflags.md:35 src/bare-metal/aps/better-uart/registers.md:39 src/bare-metal/aps/better-uart/driver.md:62 +#: src/bare-metal/aps/better-uart/using.md:49 src/bare-metal/aps/logging.md:48 src/bare-metal/aps/logging/using.md:44 src/bare-metal/useful-crates/zerocopy.md:43 src/bare-metal/useful-crates/aarch64-paging.md:26 +#: src/bare-metal/useful-crates/buddy_system_allocator.md:24 src/bare-metal/useful-crates/tinyvec.md:21 src/bare-metal/useful-crates/spin.md:21 src/bare-metal/android/vmbase.md:19 +#: src/exercises/bare-metal/afternoon.md:5 src/concurrency/threads.md:28 src/concurrency/scoped-threads.md:35 src/concurrency/channels.md:25 src/concurrency/send-sync.md:18 src/concurrency/send-sync/send.md:11 +#: src/concurrency/send-sync/sync.md:12 src/concurrency/shared_state/arc.md:27 src/concurrency/shared_state/mutex.md:29 src/concurrency/shared_state/example.md:21 src/exercises/concurrency/morning.md:10 +#: src/async/async-await.md:23 src/async/futures.md:30 src/async/runtimes.md:18 src/async/runtimes/tokio.md:31 src/async/tasks.md:51 src/async/channels.md:33 src/async/control-flow/join.md:34 +#: src/async/control-flow/select.md:59 src/async/pitfalls/blocking-executor.md:27 src/async/pitfalls/pin.md:66 src/exercises/concurrency/afternoon.md:11 src/exercises/concurrency/dining-philosophers-async.md:75 msgid "
" msgstr "
" @@ -1191,49 +1168,39 @@ msgid "" "information to the slides. This could be key points which the instructor should\n" "cover as well as answers to typical questions which come up in class." msgstr "" -"āĻāϟāĻŋ a _speaker note_ āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖāĨ¤ āφāĻŽāϰāĻž āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϤāĻĨā§āϝ āĻ¸ā§āϞāĻžāχāĻĄā§‡ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻāχāϗ⧁āϞ⧋\n" +"āĻāϟāĻŋ āĻāĻ•āϟāĻŋ _speaker note_ āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖāĨ¤ āφāĻŽāϰāĻž āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϤāĻĨā§āϝ āĻ¸ā§āϞāĻžāχāĻĄā§‡ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻāχāϗ⧁āϞ⧋\n" "āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦā§‹āĨ¤ āĻāϟāĻŋ āĻĒā§āϰāϧāĻžāύ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻž āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāϕ⧇āϰ āωāϚāĻŋāϤ\n" "āĻ•āĻ­āĻžāϰ⧇āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻ•ā§āϞāĻžāϏ⧇ āφāϏāĻž āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϰāĻļā§āύ⧇āϰ āωāĻ¤ā§āϤāϰ āĻĻ⧇āĻ“ā§ŸāĻžāĨ¤" -#: src/welcome.md:56 src/cargo/rust-ecosystem.md:67 src/cargo/code-samples.md:35 src/cargo/running-locally.md:74 src/welcome-day-1.md:42 -#: src/welcome-day-1/what-is-rust.md:29 src/hello-world.md:40 src/hello-world/small-example.md:44 src/why-rust.md:24 src/why-rust/compile-time.md:35 -#: src/why-rust/runtime.md:22 src/why-rust/modern.md:66 src/basic-syntax/scalar-types.md:43 src/basic-syntax/compound-types.md:62 -#: src/basic-syntax/references.md:28 src/basic-syntax/slices.md:36 src/basic-syntax/string-slices.md:44 src/basic-syntax/functions.md:41 -#: src/basic-syntax/rustdoc.md:33 src/basic-syntax/methods.md:45 src/exercises/day-1/morning.md:28 src/exercises/day-1/for-loops.md:95 -#: src/basic-syntax/variables.md:20 src/basic-syntax/type-inference.md:48 src/basic-syntax/static-and-const.md:52 src/basic-syntax/scopes-shadowing.md:39 -#: src/memory-management/stack.md:49 src/memory-management/rust.md:18 src/ownership/move-semantics.md:26 src/ownership/moves-function-calls.md:26 -#: src/ownership/copy-clone.md:51 src/ownership/borrowing.md:51 src/ownership/shared-unique-borrows.md:29 src/ownership/lifetimes-function-calls.md:60 -#: src/ownership/lifetimes-data-structures.md:30 src/exercises/day-1/afternoon.md:15 src/exercises/day-1/book-library.md:104 src/structs.md:41 -#: src/structs/tuple-structs.md:43 src/structs/field-shorthand.md:72 src/enums.md:41 src/enums/variant-payloads.md:45 src/enums/sizes.md:155 src/methods.md:41 -#: src/methods/receiver.md:29 src/methods/example.md:53 src/pattern-matching.md:35 src/pattern-matching/destructuring-enums.md:39 -#: src/pattern-matching/destructuring-structs.md:29 src/pattern-matching/destructuring-arrays.md:46 src/pattern-matching/match-guards.md:28 -#: src/exercises/day-2/morning.md:15 src/exercises/day-2/points-polygons.md:125 src/control-flow/blocks.md:46 src/control-flow/if-expressions.md:37 -#: src/control-flow/if-let-expressions.md:41 src/control-flow/while-let-expressions.md:29 src/control-flow/for-expressions.md:30 -#: src/control-flow/loop-expressions.md:32 src/control-flow/match-expressions.md:33 src/std.md:31 src/std/option-result.md:25 src/std/string.md:42 -#: src/std/vec.md:49 src/std/hashmap.md:66 src/std/box.md:39 src/std/box-recursive.md:41 src/std/rc.md:69 src/modules.md:32 src/modules/visibility.md:48 -#: src/modules/filesystem.md:71 src/exercises/day-2/afternoon.md:11 src/generics/data-types.md:25 src/generics/methods.md:31 src/traits/trait-objects.md:83 -#: src/traits/default-methods.md:41 src/traits/trait-bounds.md:50 src/traits/impl-trait.md:44 src/traits/iterator.md:42 src/traits/from-iterator.md:26 -#: src/traits/from-into.md:33 src/traits/drop.md:42 src/traits/default.md:47 src/traits/operators.md:38 src/traits/closures.md:38 -#: src/exercises/day-3/morning.md:11 src/error-handling/result.md:33 src/error-handling/try-operator.md:53 -#: src/error-handling/converting-error-types-example.md:60 src/error-handling/deriving-error-enums.md:45 src/error-handling/dynamic-errors.md:41 -#: src/error-handling/error-contexts.md:42 src/unsafe.md:32 src/unsafe/raw-pointers.md:43 src/unsafe/mutable-static-variables.md:35 src/unsafe/unions.md:28 -#: src/unsafe/writing-unsafe-functions.md:38 src/unsafe/extern-functions.md:28 src/unsafe/unsafe-traits.md:37 src/exercises/day-3/afternoon.md:11 -#: src/android/interoperability/with-c/rust.md:86 src/exercises/android/morning.md:15 src/bare-metal/no_std.md:65 src/bare-metal/minimal.md:26 -#: src/bare-metal/alloc.md:49 src/bare-metal/microcontrollers.md:29 src/bare-metal/microcontrollers/mmio.md:72 src/bare-metal/microcontrollers/pacs.md:65 -#: src/bare-metal/microcontrollers/hals.md:49 src/bare-metal/microcontrollers/board-support.md:40 src/bare-metal/microcontrollers/type-state.md:43 -#: src/bare-metal/microcontrollers/embedded-hal.md:23 src/bare-metal/microcontrollers/probe-rs.md:29 src/bare-metal/microcontrollers/debugging.md:38 -#: src/bare-metal/microcontrollers/other-projects.md:26 src/exercises/bare-metal/morning.md:11 src/bare-metal/aps.md:15 src/bare-metal/aps/inline-assembly.md:58 -#: src/bare-metal/aps/mmio.md:17 src/bare-metal/aps/uart/traits.md:27 src/bare-metal/aps/better-uart.md:28 src/bare-metal/aps/better-uart/bitflags.md:40 -#: src/bare-metal/aps/better-uart/registers.md:46 src/bare-metal/aps/better-uart/driver.md:67 src/bare-metal/aps/better-uart/using.md:55 -#: src/bare-metal/aps/logging.md:52 src/bare-metal/aps/logging/using.md:49 src/bare-metal/useful-crates/zerocopy.md:53 -#: src/bare-metal/useful-crates/aarch64-paging.md:33 src/bare-metal/useful-crates/buddy_system_allocator.md:30 src/bare-metal/useful-crates/tinyvec.md:26 -#: src/bare-metal/useful-crates/spin.md:30 src/bare-metal/android/vmbase.md:25 src/exercises/bare-metal/afternoon.md:11 src/concurrency/threads.md:45 -#: src/concurrency/scoped-threads.md:40 src/concurrency/channels.md:32 src/concurrency/send-sync.md:23 src/concurrency/send-sync/send.md:16 -#: src/concurrency/send-sync/sync.md:18 src/concurrency/shared_state/arc.md:38 src/concurrency/shared_state/mutex.md:45 -#: src/concurrency/shared_state/example.md:56 src/exercises/concurrency/morning.md:16 src/async/async-await.md:48 src/async/futures.md:45 -#: src/async/runtimes.md:29 src/async/runtimes/tokio.md:49 src/async/tasks.md:64 src/async/channels.md:49 src/async/control-flow/join.md:50 -#: src/async/control-flow/select.md:77 src/async/pitfalls/blocking-executor.md:50 src/async/pitfalls/pin.md:112 src/async/pitfalls/async-traits.md:63 -#: src/exercises/concurrency/afternoon.md:17 src/exercises/concurrency/dining-philosophers-async.md:79 +#: src/welcome.md:56 src/cargo/rust-ecosystem.md:67 src/cargo/code-samples.md:35 src/cargo/running-locally.md:74 src/welcome-day-1.md:42 src/welcome-day-1/what-is-rust.md:29 src/hello-world.md:40 +#: src/hello-world/small-example.md:44 src/why-rust.md:24 src/why-rust/compile-time.md:35 src/why-rust/runtime.md:22 src/why-rust/modern.md:66 src/basic-syntax/scalar-types.md:43 +#: src/basic-syntax/compound-types.md:62 src/basic-syntax/references.md:28 src/basic-syntax/slices.md:36 src/basic-syntax/string-slices.md:44 src/basic-syntax/functions.md:41 src/basic-syntax/rustdoc.md:33 +#: src/basic-syntax/methods.md:45 src/exercises/day-1/morning.md:28 src/exercises/day-1/for-loops.md:95 src/basic-syntax/variables.md:20 src/basic-syntax/type-inference.md:48 +#: src/basic-syntax/static-and-const.md:52 src/basic-syntax/scopes-shadowing.md:39 src/memory-management/stack.md:49 src/memory-management/rust.md:18 src/ownership/move-semantics.md:26 +#: src/ownership/moves-function-calls.md:26 src/ownership/copy-clone.md:51 src/ownership/borrowing.md:51 src/ownership/shared-unique-borrows.md:29 src/ownership/lifetimes-function-calls.md:60 +#: src/ownership/lifetimes-data-structures.md:30 src/exercises/day-1/afternoon.md:15 src/exercises/day-1/book-library.md:104 src/structs.md:41 src/structs/tuple-structs.md:43 src/structs/field-shorthand.md:72 +#: src/enums.md:41 src/enums/variant-payloads.md:45 src/enums/sizes.md:155 src/methods.md:41 src/methods/receiver.md:29 src/methods/example.md:53 src/pattern-matching.md:35 +#: src/pattern-matching/destructuring-enums.md:39 src/pattern-matching/destructuring-structs.md:29 src/pattern-matching/destructuring-arrays.md:46 src/pattern-matching/match-guards.md:28 +#: src/exercises/day-2/morning.md:15 src/exercises/day-2/points-polygons.md:125 src/control-flow/blocks.md:46 src/control-flow/if-expressions.md:37 src/control-flow/if-let-expressions.md:41 +#: src/control-flow/while-let-expressions.md:29 src/control-flow/for-expressions.md:30 src/control-flow/loop-expressions.md:32 src/control-flow/match-expressions.md:33 src/std.md:31 src/std/option-result.md:25 +#: src/std/string.md:42 src/std/vec.md:49 src/std/hashmap.md:66 src/std/box.md:39 src/std/box-recursive.md:41 src/std/rc.md:69 src/modules.md:32 src/modules/visibility.md:48 src/modules/filesystem.md:71 +#: src/exercises/day-2/afternoon.md:11 src/generics/data-types.md:25 src/generics/methods.md:31 src/traits/trait-objects.md:83 src/traits/default-methods.md:41 src/traits/trait-bounds.md:50 +#: src/traits/impl-trait.md:44 src/traits/iterator.md:42 src/traits/from-iterator.md:26 src/traits/from-into.md:33 src/traits/drop.md:42 src/traits/default.md:47 src/traits/operators.md:38 +#: src/traits/closures.md:38 src/exercises/day-3/morning.md:11 src/error-handling/result.md:33 src/error-handling/try-operator.md:53 src/error-handling/converting-error-types-example.md:60 +#: src/error-handling/deriving-error-enums.md:45 src/error-handling/dynamic-errors.md:41 src/error-handling/error-contexts.md:42 src/unsafe.md:32 src/unsafe/raw-pointers.md:43 +#: src/unsafe/mutable-static-variables.md:35 src/unsafe/unions.md:28 src/unsafe/writing-unsafe-functions.md:38 src/unsafe/extern-functions.md:28 src/unsafe/unsafe-traits.md:37 src/exercises/day-3/afternoon.md:11 +#: src/android/interoperability/with-c/rust.md:86 src/exercises/android/morning.md:15 src/bare-metal/no_std.md:65 src/bare-metal/minimal.md:26 src/bare-metal/alloc.md:49 src/bare-metal/microcontrollers.md:29 +#: src/bare-metal/microcontrollers/mmio.md:72 src/bare-metal/microcontrollers/pacs.md:65 src/bare-metal/microcontrollers/hals.md:49 src/bare-metal/microcontrollers/board-support.md:40 +#: src/bare-metal/microcontrollers/type-state.md:43 src/bare-metal/microcontrollers/embedded-hal.md:23 src/bare-metal/microcontrollers/probe-rs.md:29 src/bare-metal/microcontrollers/debugging.md:38 +#: src/bare-metal/microcontrollers/other-projects.md:26 src/exercises/bare-metal/morning.md:11 src/bare-metal/aps.md:15 src/bare-metal/aps/inline-assembly.md:58 src/bare-metal/aps/mmio.md:17 +#: src/bare-metal/aps/uart/traits.md:27 src/bare-metal/aps/better-uart.md:28 src/bare-metal/aps/better-uart/bitflags.md:40 src/bare-metal/aps/better-uart/registers.md:46 src/bare-metal/aps/better-uart/driver.md:67 +#: src/bare-metal/aps/better-uart/using.md:55 src/bare-metal/aps/logging.md:52 src/bare-metal/aps/logging/using.md:49 src/bare-metal/useful-crates/zerocopy.md:53 src/bare-metal/useful-crates/aarch64-paging.md:33 +#: src/bare-metal/useful-crates/buddy_system_allocator.md:30 src/bare-metal/useful-crates/tinyvec.md:26 src/bare-metal/useful-crates/spin.md:30 src/bare-metal/android/vmbase.md:25 +#: src/exercises/bare-metal/afternoon.md:11 src/concurrency/threads.md:45 src/concurrency/scoped-threads.md:40 src/concurrency/channels.md:32 src/concurrency/send-sync.md:23 src/concurrency/send-sync/send.md:16 +#: src/concurrency/send-sync/sync.md:18 src/concurrency/shared_state/arc.md:38 src/concurrency/shared_state/mutex.md:45 src/concurrency/shared_state/example.md:56 src/exercises/concurrency/morning.md:16 +#: src/async/async-await.md:48 src/async/futures.md:45 src/async/runtimes.md:29 src/async/runtimes/tokio.md:49 src/async/tasks.md:64 src/async/channels.md:49 src/async/control-flow/join.md:50 +#: src/async/control-flow/select.md:77 src/async/pitfalls/blocking-executor.md:50 src/async/pitfalls/pin.md:112 src/async/pitfalls/async-traits.md:63 src/exercises/concurrency/afternoon.md:17 +#: src/exercises/concurrency/dining-philosophers-async.md:79 msgid "
" msgstr "
" @@ -1330,7 +1297,7 @@ msgid "" "That is all, good luck running the course! We hope it will be as much fun for\n" "you as it has been for us!" msgstr "" -"āĻāχāϏāĻŦ āϝ⧇, āϕ⧋āĻ°ā§āϏāϟāĻŋ āϚāĻžāϞāĻžāĻ¨ā§‹ā§Ÿ āĻļ⧁āĻ­āĻ•āĻžāĻŽāύāĻžāĨ¤ āφāĻŽāϰāĻž āφāĻļāĻž āĻ•āϰāĻŋ āĻāϟāĻž āϤāϤāϟāĻžāχ āĻŽāϜāĻžāϰ āĻšāĻŦ⧇\n" +"āĻāχāϏāĻŦ āϝ⧇, āϕ⧋āĻ°ā§āϏāϟāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻļ⧁āĻ­āĻ•āĻžāĻŽāύāĻžāĨ¤ āφāĻŽāϰāĻž āφāĻļāĻž āĻ•āϰāĻŋ āĻāϟāĻž āϤāϤāϟāĻžāχ āĻŽāϜāĻžāϰ āĻšāĻŦ⧇\n" "āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āϝāϤāϟāĻž āĻšā§Ÿā§‡āĻ›āĻŋāϞ⧋ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇āĨ¤" #: src/running-the-course.md:46 @@ -1345,11 +1312,11 @@ msgstr "" #: src/running-the-course/course-structure.md:1 msgid "# Course Structure" -msgstr "# Course āĻāϰ āĻ—āĻ āύ" +msgstr "# āϕ⧋āĻ°ā§āϏ āĻāϰ āĻ—āĻ āύ" #: src/running-the-course/course-structure.md:5 msgid "The course is fast paced and covers a lot of ground:" -msgstr "āϕ⧋āĻ°ā§āϏāϟāĻŋ āĻĻā§āϰ⧁āϤ āĻ—āϤāĻŋāϰ āĻāĻŦāĻ‚ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āĻ•āĻ­āĻžāϰ āĻ•āϰ⧇:" +msgstr "āϕ⧋āĻ°ā§āϏāϟāĻŋ āĻĻā§āϰ⧁āϤ āĻ—āϤāĻŋāϰ āĻāĻŦāĻ‚ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āĻ•āĻ­āĻžāϰ āĻ•āϰ⧇āσ" #: src/running-the-course/course-structure.md:7 msgid "" @@ -1357,9 +1324,9 @@ msgid "" "* Day 2: Compound data types, pattern matching, the standard library.\n" "* Day 3: Traits and generics, error handling, testing, unsafe Rust." msgstr "" -"* āĻĻāĻŋāύ 1: āĻŽā§ŒāϞāĻŋāĻ• Rust, āĻŽāĻžāϞāĻŋāĻ•āĻžāύāĻž āĻāĻŦāĻ‚ āϧāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻ•āĨ¤\n" -"* āĻĻāĻŋāύ 2: āϝ⧌āĻ—āĻŋāĻ• āĻĄā§‡āϟāĻž āĻĒā§āϰāĻ•āĻžāϰ, āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻŽā§āϝāĻžāϚāĻŋāĻ‚, āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāĨ¤\n" -"* āĻĻāĻŋāύ 3: Traits āĻāĻŦāĻ‚ Generics, āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž, āĻĒāϰ⧀āĻ•ā§āώāĻž, āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ RustāĨ¤" +"* āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāύāσ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āϰāĻžāĻ¸ā§āϟ, āĻŽāĻžāϞāĻŋāĻ•āĻžāύāĻž āĻāĻŦāĻ‚ āϧāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻ•āĨ¤\n" +"* āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§Ÿ āĻĻāĻŋāύāσ āϝ⧌āĻ—āĻŋāĻ• āĻĄā§‡āϟāĻž āϟāĻžāχāĻĒāϏ, āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻŽā§āϝāĻžāϚāĻŋāĻ‚, āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāĨ¤\n" +"* āϤ⧃āĻ¤ā§€ā§Ÿ āĻĻāĻŋāύāσ Traits āĻāĻŦāĻ‚ Generics, āĻāϰāϰ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚, āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚, āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ āϰāĻžāĻ¸ā§āϟāĨ¤" #: src/running-the-course/course-structure.md:11 msgid "## Deep Dives" @@ -1370,8 +1337,8 @@ msgid "" "In addition to the 3-day class on Rust Fundamentals, we cover some more\n" "specialized topics:" msgstr "" -"Rust āĻĢāĻžāĻ¨ā§āĻĄāĻžāĻŽā§‡āĻ¨ā§āϟāĻžāϞ⧇āϰ 3 āĻĻāĻŋāύ⧇āϰ āĻ•ā§āϞāĻžāϏ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āφāĻŽāϰāĻž āφāϰāĻ“ āĻ•āĻŋāϛ⧁ āĻ•āĻ­āĻžāϰ āĻ•āϰāĻŋ\n" -"āĻŦāĻŋāĻļ⧇āώ āĻŦāĻŋāώāϝāĻŧ:" +"āϰāĻžāĻ¸ā§āϟ āĻĢāĻžāĻ¨ā§āĻĄāĻžāĻŽā§‡āĻ¨ā§āϟāĻžāϞ⧇āϰ ā§Š āĻĻāĻŋāύ⧇āϰ āĻ•ā§āϞāĻžāϏ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āφāĻŽāϰāĻž āφāϰāĻ“ āĻ•āĻŋāϛ⧁ āĻŦāĻŋāĻļ⧇āώ āĻŦāĻŋāώāϝāĻŧ \n" +"āĻ•āĻ­āĻžāϰ āĻ•āϰāĻŋāσ" #: src/running-the-course/course-structure.md:16 msgid "### Android" @@ -1419,9 +1386,9 @@ msgid "" "bare-metal (embedded) development. Both microcontrollers and application\n" "processors are covered." msgstr "" -"The [Bare-Metal Deep Dive](../bare-metal.md): Rust āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒ⧁āϰ⧋ āĻĻāĻŋāύ⧇āϰ āĻ•ā§āϞāĻžāϏ\n" -"bare-metal (embedded) āωāĻ¨ā§āύāϝāĻŧāύāĨ¤ āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āωāĻ­āϝāĻŧāχ\n" -"āĻĒā§āϰāϏ⧇āϏāϰ āĻ•āĻ­āĻžāϰ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤" +"[Bare-Metal Deep Dive](../bare-metal.md): Rust āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ bare-metal (embedded) āωāĻ¨ā§āύāϝāĻŧāύ āĻāϰ āϜāĻ¨ā§āϝ \n" +"āĻāĻ•āϟāĻŋ āĻĒ⧁āϰ⧋ āĻĻāĻŋāύ⧇āϰ āĻ•ā§āϞāĻžāϏāĨ¤ āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒā§āϰāϏ⧇āϏāϰ āωāĻ­āϝāĻŧāχ \n" +"āĻ•āĻ­āĻžāϰ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤" #: src/running-the-course/course-structure.md:40 msgid "" @@ -1430,9 +1397,9 @@ msgid "" "will need to install a number of packages as described on the [welcome\n" "page](../bare-metal.md)." msgstr "" -"āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻ…āĻ‚āĻļ⧇āϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŋāύāϤ⧇ āĻšāĻŦ⧇ [BBC\n" -"micro:bit](https://microbit.org/) v2 āωāĻ¨ā§āύāϝāĻŧāύ āĻŦā§‹āĻ°ā§āĻĄ āϏāĻŽāϝāĻŧ⧇āϰ āφāϗ⧇āĨ¤ āϏāĻŦāĻžāχāϕ⧇ [welcome\n" -"page](../bare-metal.md).āĻ āĻŦāĻ°ā§āĻŖāĻŋāϤ āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻž āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤" +"āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻ…āĻ‚āĻļ⧇āϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϕ⧇ āϏāĻŽāϝāĻŧ⧇āϰ āφāϗ⧇ āĻ•āĻŋāύāϤ⧇ āĻšāĻŦ⧇ [BBC\n" +"micro:bit](https://microbit.org/) v2 āωāĻ¨ā§āύāϝāĻŧāύ āĻŦā§‹āĻ°ā§āĻĄāĨ¤ āϏāĻŦāĻžāχāϕ⧇ [welcome\n" +"page](../bare-metal.md) āĻ āĻŦāĻ°ā§āĻŖāĻŋāϤ āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻž āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤" #: src/running-the-course/course-structure.md:45 msgid "### Concurrency" @@ -1489,7 +1456,7 @@ msgstr "# āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻļāĻ°ā§āϟāĻ•āĻžāϟ" #: src/running-the-course/keyboard-shortcuts.md:3 msgid "There are several useful keyboard shortcuts in mdBook:" -msgstr "mdBook-āĻ āĻŦ⧇āĻļ āĻ•āĻŋāϛ⧁ āĻĻāϰāĻ•āĻžāϰ⧀ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻļāĻ°ā§āϟāĻ•āĻžāϟ āϰāϝāĻŧ⧇āϛ⧇:" +msgstr "mdBook-āĻ āĻŦ⧇āĻļ āĻ•āĻŋāϛ⧁ āĻĻāϰāĻ•āĻžāϰ⧀ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻļāĻ°ā§āϟāĻ•āĻžāϟ āϰāϝāĻŧ⧇āϛ⧇āσ" #: src/running-the-course/keyboard-shortcuts.md:5 msgid "" @@ -1561,17 +1528,12 @@ msgid "### Rustup (Recommended)" msgstr "### Rustup (āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ)" #: src/cargo.md:12 -msgid "" -"You can follow the instructions to install cargo and rust compiler, among other standard ecosystem tools with the [rustup][3] tool, which is maintained by the " -"Rust Foundation." -msgstr "" -"āϰāĻžāĻ¸ā§āϟ āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻž [rustup][3] āϟ⧁āϞ āϏāĻš āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āχāϕ⧋āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϟ⧁āϞ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āφāĻĒāύāĻŋ Cargo āĻāĻŦāĻ‚ āϰāĻžāĻ¸ā§āϟ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤" +msgid "You can follow the instructions to install cargo and rust compiler, among other standard ecosystem tools with the [rustup][3] tool, which is maintained by the Rust Foundation." +msgstr "āϰāĻžāĻ¸ā§āϟ āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻž [rustup][3] āϟ⧁āϞ āϏāĻš āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āχāϕ⧋āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϟ⧁āϞ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āφāĻĒāύāĻŋ Cargo āĻāĻŦāĻ‚ āϰāĻžāĻ¸ā§āϟ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤" #: src/cargo.md:14 -msgid "" -"Along with cargo and rustc, Rustup will install itself as a command line utility that you can use to install/switch toolchains, setup cross compilation, etc." -msgstr "" -"Cargo āĻāĻŦāĻ‚ rustc āĻāϰ āϏāĻžāĻĨ⧇, Rustup āύāĻŋāĻœā§‡āϕ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āĻšāĻŋāϏāĻžāĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ⧇ āϝāĻž āφāĻĒāύāĻŋ āϟ⧁āϞāĻšā§‡āχāύ āχāύāĻ¸ā§āϟāϞ/āϏ⧁āχāϚ, āϏ⧇āϟāφāĻĒ āĻ•ā§āϰāϏ āĻ•āĻŽā§āĻĒāĻžāχāϞ⧇āĻļāύ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤" +msgid "Along with cargo and rustc, Rustup will install itself as a command line utility that you can use to install/switch toolchains, setup cross compilation, etc." +msgstr "Cargo āĻāĻŦāĻ‚ rustc āĻāϰ āϏāĻžāĻĨ⧇, Rustup āύāĻŋāĻœā§‡āϕ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āĻšāĻŋāϏāĻžāĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ⧇ āϝāĻž āφāĻĒāύāĻŋ āϟ⧁āϞāĻšā§‡āχāύ āχāύāĻ¸ā§āϟāϞ/āϏ⧁āχāϚ, āϏ⧇āϟāφāĻĒ āĻ•ā§āϰāϏ āĻ•āĻŽā§āĻĒāĻžāχāϞ⧇āĻļāύ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤" #: src/cargo.md:16 msgid "### Package Managers" @@ -1600,16 +1562,16 @@ msgid "" "This will allow [rust-analyzer][1] to jump to the definitions. We suggest using\n" "[VS Code][2] to edit the code (but any LSP compatible editor works)." msgstr "" -"āĻāϟāĻŋ [rust-āĻŦāĻŋāĻļā§āϞ⧇āώāĻ•] [1] āϕ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧ āϝ⧇āϤ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻŦ⧇āĨ¤ āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχ\n" -"[VS Code][2] āϕ⧋āĻĄ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰāϤ⧇ (āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝ⧇āϕ⧋āύ⧋ LSP āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āϏāĻŽā§āĻĒāĻžāĻĻāĻ• āĻ•āĻžāϜ āĻ•āϰ⧇)āĨ¤" +"āĻāϟāĻŋ [rust-analyzer] [1] āϕ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧ āϝ⧇āϤ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻŦ⧇āĨ¤ āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχ\n" +"[VS Code][2] āϕ⧋āĻĄ āĻāĻĄāĻŋāϟ āĻ•āϰāϤ⧇ (āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝ⧇āϕ⧋āύ⧋ LSP āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻāĻĄāĻŋāϟāϰ āĻ•āĻžāϜ āĻ•āϰ⧇)āĨ¤" #: src/cargo.md:29 msgid "" -"Some folks also like to use the [JetBrains][4] family of IDEs, which do their own analysis but have their own tradeoffs. If you prefer them, you can install " -"the [Rust Plugin][5]. Please take note that as of January 2023 debugging only works on the CLion version of the JetBrains IDEA suite." +"Some folks also like to use the [JetBrains][4] family of IDEs, which do their own analysis but have their own tradeoffs. If you prefer them, you can install the [Rust Plugin][5]. Please take note that as of " +"January 2023 debugging only works on the CLion version of the JetBrains IDEA suite." msgstr "" -"āĻ•āĻŋāϛ⧁ āϞ⧋āĻ• IDE-āĻāϰ āϜāĻ¨ā§āϝ [JetBrains][4] āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇, āϝāĻžāϰāĻž āϤāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻŦāĻŋāĻļā§āϞ⧇āώāϪ⧇ āĻ•āϰ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻŸā§āϰ⧇āĻĄāĻ…āĻĢ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϤāĻžāĻĻ⧇āϰ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇āύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ [Rust " -"Plugin][5] āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 2023 āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ JetBrains IDEA āĻ¸ā§āϝ⧁āĻŸā§‡āϰ CLion āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤" +"āĻ•āĻŋāϛ⧁ āϞ⧋āĻ• IDE-āĻāϰ āϜāĻ¨ā§āϝ [JetBrains][4] āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇, āϝāĻžāϰāĻž āϤāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻŦāĻŋāĻļā§āϞ⧇āώāϪ⧇ āĻ•āϰ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻŸā§āϰ⧇āĻĄāĻ…āĻĢ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϤāĻžāĻĻ⧇āϰ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇āύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ [Rust Plugin][5] āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ " +"āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 2023 āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ JetBrains IDEA āĻ¸ā§āϝ⧁āĻŸā§‡āϰ CLion āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤" #: src/cargo/rust-ecosystem.md:1 msgid "# The Rust Ecosystem" @@ -1649,9 +1611,8 @@ msgstr "" " āφāĻĒāύāĻŋ āĻāĻ•āĻŦāĻžāϰ⧇ Rust āĻāϰ āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻāĻŦāĻ‚ `āϰāĻ¸ā§āϟāφāĻĒ` āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ\n" " āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ…āύ⧁āϏāĻžāϰ⧇ āφāĻĒāύāĻžāϕ⧇ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāϤ⧇ āĻĻ⧇āĻŦ⧇āĨ¤" -#: src/cargo/rust-ecosystem.md:21 src/hello-world.md:25 src/hello-world/small-example.md:27 src/why-rust/runtime.md:10 src/why-rust/modern.md:21 -#: src/basic-syntax/compound-types.md:30 src/pattern-matching/destructuring-enums.md:35 src/error-handling/try-operator.md:48 -#: src/error-handling/converting-error-types-example.md:50 src/concurrency/threads.md:30 src/async/async-await.md:25 +#: src/cargo/rust-ecosystem.md:21 src/hello-world.md:25 src/hello-world/small-example.md:27 src/why-rust/runtime.md:10 src/why-rust/modern.md:21 src/basic-syntax/compound-types.md:30 +#: src/pattern-matching/destructuring-enums.md:35 src/error-handling/try-operator.md:48 src/error-handling/converting-error-types-example.md:50 src/concurrency/threads.md:30 src/async/async-await.md:25 msgid "Key points:" msgstr "āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĻāĻŋāĻ•:" @@ -1680,8 +1641,7 @@ msgid "" "\n" " * Mention that it is quite rare to ever use the compiler directly not through `cargo` (most users never do).\n" "\n" -" * 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: \n" +" * 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: \n" " * Project/package structure\n" " * [workspaces]\n" " * Dev Dependencies and Runtime Dependency management/caching\n" @@ -1732,7 +1692,7 @@ msgid "" "You can use Ctrl + Enter to execute the code when focus is in the\n" "text box." msgstr "" -"āϝāĻ–āύ āĻŸā§‡āĻ•ā§āϏāϟ āĻŦāĻ•ā§āϏ āĻ āĻĢā§‹āĻ•āĻžāϏ āĻĨāĻžāϕ⧇ āϤāĻ–āύ āϕ⧋āĻĄāϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāϤ⧇ āφāĻĒāύāĻŋ Ctrl + Enter āĻŦā§āϝāĻŦāĻšāĻžāϰ \n" +"āϝāĻ–āύ āĻŸā§‡āĻ•ā§āϏāϟ āĻŦāĻ•ā§āϏ āĻ āĻĢā§‹āĻ•āĻžāϏ āĻĨāĻžāϕ⧇ āϤāĻ–āύ āϕ⧋āĻĄāϟāĻŋ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāϟ āĻ•āϰāϤ⧇ āφāĻĒāύāĻŋ Ctrl + Enter āĻŦā§āϝāĻŦāĻšāĻžāϰ \n" "āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤" #: src/cargo/code-samples.md:24 @@ -1847,9 +1807,9 @@ msgid "" "local editor. It will make their life easier since they will have a\n" "normal development environment." msgstr "" -"āĻ•ā§āϞāĻžāϏ āĻ…āĻ‚āĻļāĻ—ā§āϰāĻšāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻ•āĻžāĻ°ā§āĻ—ā§‹ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻāĻĄāĻŋāϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āωāĻ¤ā§āϏāĻžāĻšāĻŋāϤ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύ\n" -"āĨ¤ āĻāϟāĻŋ āϤāĻžāĻĻ⧇āϰ āĻœā§€āĻŦāύāϕ⧇ āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧁āϞāĻŦ⧇ āϝ⧇āĻšā§‡āϤ⧁ āϤāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻĨāĻžāĻ•āĻŦ⧇\n" -"āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āωāĻ¨ā§āύāϝāĻŧāύ āĻĒāϰāĻŋāĻŦ⧇āĻļāĨ¤" +"āĻ•ā§āϞāĻžāϏ āĻ…āĻ‚āĻļāĻ—ā§āϰāĻšāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ Cargo āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϞ⧋āĻ•āĻžāϞ āĻāĻĄāĻŋāϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻ‰ā§ŽāϏāĻžāĻšāĻŋāϤ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύ\n" +"āĨ¤ āĻāϟāĻŋ āϤāĻžāĻĻ⧇āϰ āĻœā§€āĻŦāύāϕ⧇ āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧁āϞāĻŦ⧇ āϝ⧇āĻšā§‡āϤ⧁ āϤāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ \n" +"āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻāύāĻ­āĻžāχāϰāύāĻŽā§‡āĻ¨ā§āϟ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤" #: src/welcome-day-1.md:1 msgid "# Welcome to Day 1" @@ -1876,7 +1836,7 @@ msgstr "" #: src/welcome-day-1.md:16 msgid "Please remind the students that:" -msgstr "āĻ›āĻžāĻ¤ā§āϰāĻĻ⧇āϰāϕ⧇ āĻāϟāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋā§Ÿā§‡ āĻĻāĻŋāύ āϝ⧇āσ" +msgstr "āĻļāĻŋāĻ•ā§āώāĻžāĻ°ā§āĻĨā§€āĻĻ⧇āϰ āĻāϟāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋā§Ÿā§‡ āĻĻāĻŋāύ āϝ⧇āσ" #: src/welcome-day-1.md:18 msgid "" @@ -2276,7 +2236,7 @@ msgstr "" #: src/basic-syntax.md:3 msgid "Much of the Rust syntax will be familiar to you from C, C++ or Java:" -msgstr "C, C++ or Java āĻĨ⧇āϕ⧇ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— Rust āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻŽāύ⧇ āĻšāĻŦ⧇:" +msgstr "C, C++ or Java āĻĨ⧇āϕ⧇ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϰāĻžāĻ¸ā§āϟ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻŽāύ⧇ āĻšāĻŦ⧇āσ" #: src/basic-syntax.md:5 msgid "" @@ -2313,7 +2273,7 @@ msgstr "" #: src/basic-syntax/scalar-types.md:12 msgid "The types have widths as follows:" -msgstr "types āĻāϰ āĻĒā§āϰāĻ¸ā§āĻĨ āύāĻŋāĻŽā§āύāϰ⧂āĻĒ:" +msgstr "āϟāĻžāχāĻĒāϗ⧁āϞ⧋āϰ āφāĻ•āĻžāϰ āĻ āϰāĻ•āĻŽ:" #: src/basic-syntax/scalar-types.md:14 msgid "" @@ -2329,7 +2289,7 @@ msgstr "" #: src/basic-syntax/scalar-types.md:21 msgid "There are a few syntaxes which are not shown above:" -msgstr "āĻ•āĻŋāϛ⧁ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āφāϛ⧇ āϝāĻž āωāĻĒāϰ⧇ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧāύāĻŋ:" +msgstr "āĻ•āĻŋāϛ⧁ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āφāϛ⧇ āϝāĻž āωāĻĒāϰ⧇ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧāύāĻŋāσ" #: src/basic-syntax/scalar-types.md:23 msgid "" @@ -2503,8 +2463,6 @@ msgid "" "
\n" "Key points:" msgstr "" -"
\n" -"āĻŽā§‚āϞ āĻŦāĻŋāώ⧟āĻŦāĻ¸ā§āϤ⧁:" #: src/basic-syntax/references.md:24 msgid "" @@ -2580,8 +2538,7 @@ msgid "" "\n" "* To easily create a slice of the full array, we can therefore use `&a[..]`.\n" "\n" -"* `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.\n" +"* `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.\n" " \n" "* Slices always borrow from another object. In this example, `a` has to remain 'alive' (in scope) for at least as long as our slice. \n" " \n" @@ -2873,9 +2830,8 @@ msgid "" "their state if you navigate away from the page." msgstr "" -#: src/exercises/day-1/morning.md:22 src/exercises/day-1/afternoon.md:11 src/exercises/day-2/morning.md:11 src/exercises/day-2/afternoon.md:7 -#: src/exercises/day-3/morning.md:7 src/exercises/bare-metal/morning.md:7 src/exercises/bare-metal/afternoon.md:7 src/exercises/concurrency/morning.md:12 -#: src/exercises/concurrency/afternoon.md:13 +#: src/exercises/day-1/morning.md:22 src/exercises/day-1/afternoon.md:11 src/exercises/day-2/morning.md:11 src/exercises/day-2/afternoon.md:7 src/exercises/day-3/morning.md:7 src/exercises/bare-metal/morning.md:7 +#: src/exercises/bare-metal/afternoon.md:7 src/exercises/concurrency/morning.md:12 src/exercises/concurrency/afternoon.md:13 msgid "After looking at the exercises, you can look at the [solutions] provided." msgstr "" @@ -3145,9 +3101,7 @@ msgid "" msgstr "" #: src/basic-syntax/type-inference.md:32 -msgid "" -"The following code tells the compiler to copy into a certain generic container without the code ever explicitly specifying the contained type, using `_` as a " -"placeholder:" +msgid "The following code tells the compiler to copy into a certain generic container without the code ever explicitly specifying the contained type, using `_` as a placeholder:" msgstr "" #: src/basic-syntax/type-inference.md:34 @@ -3166,9 +3120,7 @@ msgid "" msgstr "" #: src/basic-syntax/type-inference.md:46 -msgid "" -"[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect) relies on `FromIterator`, which [`HashSet`](https://doc.rust-lang." -"org/std/iter/trait.FromIterator.html) implements." +msgid "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect) relies on `FromIterator`, which [`HashSet`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html) implements." msgstr "" #: src/basic-syntax/static-and-const.md:1 @@ -3233,8 +3185,8 @@ msgstr "" #: src/basic-syntax/static-and-const.md:41 msgid "" -"As noted in the [Rust RFC Book][1], these are not inlined upon use and have an actual associated memory location. This is useful for unsafe and embedded " -"code, and the variable lives through the entirety of the program execution." +"As noted in the [Rust RFC Book][1], these are not inlined upon use and have an actual associated memory location. This is useful for unsafe and embedded code, and the variable lives through the entirety of the " +"program execution." msgstr "" #: src/basic-syntax/static-and-const.md:44 @@ -3280,12 +3232,11 @@ msgstr "" #: src/basic-syntax/scopes-shadowing.md:25 msgid "" -"* Definition: 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. \n" +"* Definition: 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. \n" "* A shadowing variable can have a different type. \n" "* Shadowing looks obscure at first, but is convenient for holding on to values after `.unwrap()`.\n" -"* The following code demonstrates why the compiler can't simply reuse memory locations when shadowing an immutable variable in a scope, even if the type does " -"not change." +"* The following code demonstrates why the compiler can't simply reuse memory locations when shadowing an immutable variable in a scope, even if the type does not change." msgstr "" #: src/basic-syntax/scopes-shadowing.md:30 @@ -3390,8 +3341,7 @@ msgstr "" msgid "" "* Mention that a `String` is backed by a `Vec`, so it has a capacity and length and can grow if mutable via reallocation on the heap.\n" "\n" -"* If students ask about it, you can mention that the underlying memory is heap allocated using the [System Allocator] and custom allocators can be implemented " -"using the [Allocator API]\n" +"* If students ask about it, you can mention that the underlying memory is heap allocated using the [System Allocator] and custom allocators can be implemented using the [Allocator API]\n" "\n" "* We can inspect the memory layout with `unsafe` code. However, you should point out that this is rightfully unsafe!\n" "\n" @@ -3417,7 +3367,7 @@ msgstr "# āĻŽā§āϝāĻžāύ⧁⧟āĻžāϞ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨ #: src/memory-management/manual.md:3 msgid "You allocate and deallocate heap memory yourself." -msgstr "āφāĻĒāύāĻŋ āύāĻŋāĻœā§‡āχ heap-memory āĻŦāϰāĻžāĻĻā§āĻĻ āĻāĻŦāĻ‚ āĻĄāĻŋāϞāϕ⧇āϟ āĻ•āϰ⧁āύāĨ¤" +msgstr "āφāĻĒāύāĻŋ āύāĻŋāĻœā§‡āχ heap-memory āĻāϞ⧋āϕ⧇āϟ āĻāĻŦāĻ‚ āĻĄāĻŋ-āĻāϞ⧋āϕ⧇āϟ āĻ•āϰ⧁āύāĨ¤" #: src/memory-management/manual.md:5 msgid "If not done with care, this can lead to crashes, bugs, security vulnerabilities, and memory leaks." @@ -3548,8 +3498,7 @@ msgstr "" #: src/memory-management/rust.md:5 msgid "" "* Safe and correct like Java, but without a garbage collector.\n" -"* Depending on which abstraction (or combination of abstractions) you choose, can be a single unique pointer, reference counted, or atomically reference " -"counted.\n" +"* Depending on which abstraction (or combination of abstractions) you choose, can be a single unique pointer, reference counted, or atomically reference counted.\n" "* Scope-based like C++, but the compiler enforces full adherence.\n" "* A Rust user can choose the right abstraction for the situation, some even have no cost at runtime like C." msgstr "" @@ -3560,8 +3509,8 @@ msgstr "" #: src/memory-management/rust.md:14 msgid "" -"* If asked how at this point, you can mention that in Rust this is usually handled by RAII wrapper types such as [Box], [Vec], [Rc], or [Arc]. These " -"encapsulate ownership and memory allocation via various means, and prevent the potential errors in C.\n" +"* If asked how at this point, you can mention that in Rust this is usually handled by RAII wrapper types such as [Box], [Vec], [Rc], or [Arc]. These encapsulate ownership and memory allocation via various " +"means, and prevent the potential errors in C.\n" "\n" "* You may be asked about destructors here, the [Drop] trait is the Rust equivalent." msgstr "" @@ -3977,9 +3926,8 @@ msgstr "" #: src/ownership/borrowing.md:28 msgid "" -"* Demonstrate that the return from `add` is cheap because the compiler can eliminate the copy operation. Change the above code to print stack addresses and " -"run it on the [Playground]. In the \"DEBUG\" optimization level, the addresses should change, while they stay the same when changing to the \"RELEASE\" " -"setting:\n" +"* Demonstrate that the return from `add` is cheap because the compiler can eliminate the copy operation. Change the above code to print stack addresses and run it on the [Playground]. In the \"DEBUG\" " +"optimization level, the addresses should change, while they stay the same when changing to the \"RELEASE\" setting:\n" "\n" " ```rust,editable\n" " #[derive(Debug)]\n" @@ -4000,8 +3948,8 @@ msgid "" " }\n" " ```\n" "* The Rust compiler can do return value optimization (RVO).\n" -"* In C++, copy elision has to be defined in the language specification because constructors can have side effects. In Rust, this is not an issue at all. If " -"RVO did not happen, Rust will always performs a simple and efficient `memcpy` copy." +"* In C++, copy elision has to be defined in the language specification because constructors can have side effects. In Rust, this is not an issue at all. If RVO did not happen, Rust will always performs a simple " +"and efficient `memcpy` copy." msgstr "" #: src/ownership/shared-unique-borrows.md:1 @@ -4040,8 +3988,7 @@ msgstr "" msgid "" "* The above code does not compile because `a` is borrowed as mutable (through `c`) and as immutable (through `b`) at the same time.\n" "* Move the `println!` statement for `b` before the scope that introduces `c` to make the code compile.\n" -"* After that change, the compiler realizes that `b` is only ever used before the new mutable borrow of `a` through `c`. This is a feature of the borrow " -"checker called \"non-lexical lifetimes\"." +"* After that change, the compiler realizes that `b` is only ever used before the new mutable borrow of `a` through `c`. This is a feature of the borrow checker called \"non-lexical lifetimes\"." msgstr "" #: src/ownership/lifetimes.md:1 @@ -4123,8 +4070,8 @@ msgid "" " ```\n" " Note how this does not compile since `p3` outlives `p2`.\n" "\n" -"* Reset the workspace and change the function signature to `fn left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. This will not compile because " -"the relationship between the lifetimes `'a` and `'b` is unclear.\n" +"* Reset the workspace and change the function signature to `fn left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. This will not compile because the relationship between the lifetimes `'a` and `'b` " +"is unclear.\n" "* Another way to explain it:\n" " * Two references to two values are borrowed by a function and the function returns\n" " another reference.\n" @@ -4164,14 +4111,12 @@ msgstr "" #: src/ownership/lifetimes-data-structures.md:25 msgid "" -"* In the above example, the annotation on `Highlight` enforces that the data underlying the contained `&str` lives at least as long as any instance of " -"`Highlight` that uses that data.\n" +"* In the above example, the annotation on `Highlight` enforces that the data underlying the contained `&str` lives at least as long as any instance of `Highlight` that uses that data.\n" "* If `text` is consumed before the end of the lifetime of `fox` (or `dog`), the borrow checker throws an error.\n" -"* Types with borrowed data force users to hold on to the original data. This can be useful for creating lightweight views, but it generally makes them " -"somewhat harder to use.\n" +"* Types with borrowed data force users to hold on to the original data. This can be useful for creating lightweight views, but it generally makes them somewhat harder to use.\n" "* When possible, make data structures own their data directly.\n" -"* Some structs with multiple references inside can have more than one lifetime annotation. This can be necessary if there is a need to describe lifetime " -"relationships between the references themselves, in addition to the lifetime of the struct itself. Those are very advanced use cases." +"* Some structs with multiple references inside can have more than one lifetime annotation. This can be necessary if there is a need to describe lifetime relationships between the references themselves, in " +"addition to the lifetime of the struct itself. Those are very advanced use cases." msgstr "" #: src/exercises/day-1/afternoon.md:1 @@ -4550,11 +4495,9 @@ msgid "" " * Unlike in C++, there is no inheritance between structs.\n" "* Methods are defined in an `impl` block, which we will see in following slides.\n" "* This may be a good time to let people know there are different types of structs. \n" -" * 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. \n" +" * 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. \n" " * The next slide will introduce Tuple structs, used when the field names are not important.\n" -"* The syntax `..peter` 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." +"* The syntax `..peter` 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 "" #: src/structs/tuple-structs.md:1 @@ -4731,8 +4674,7 @@ msgid "" "```" msgstr "" -#: src/enums.md:33 src/enums/sizes.md:29 src/methods.md:30 src/methods/example.md:46 src/pattern-matching.md:25 src/pattern-matching/match-guards.md:22 -#: src/control-flow/blocks.md:42 +#: src/enums.md:33 src/enums/sizes.md:29 src/methods.md:30 src/methods/example.md:46 src/pattern-matching.md:25 src/pattern-matching/match-guards.md:22 src/control-flow/blocks.md:42 msgid "Key Points:" msgstr "" @@ -4743,8 +4685,7 @@ msgid "" "* This might be a good time to compare Structs and Enums:\n" " * In both, you can have a simple version without fields (unit struct) or one with different types of fields (variant payloads). \n" " * In both, associated functions are defined within an `impl` block.\n" -" * 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. " +" * 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/enums/variant-payloads.md:1 @@ -4789,8 +4730,7 @@ msgstr "" #: src/enums/variant-payloads.md:35 msgid "" -"* The values in the enum variants can only be accessed after being pattern matched. The pattern binds references to the fields in the \"match arm\" after the " -"`=>`.\n" +"* The values in the enum variants can only be accessed after being pattern matched. The pattern binds references to the fields in the \"match arm\" after the `=>`.\n" " * The expression is matched against the patterns from top to bottom. There is no fall-through like in C or C++.\n" " * The match expression has a value. The value is the last expression in the match arm which was executed.\n" " * Starting from the top we look for what pattern matches the value then run the code following the arrow. Once we find a match, we stop. \n" @@ -4798,8 +4738,7 @@ msgid "" "* `match` inspects a hidden discriminant field in the `enum`.\n" "* It is possible to retrieve the discriminant by calling `std::mem::discriminant()`\n" " * This is useful, for example, if implementing `PartialEq` for structs where comparing field values doesn't affect equality.\n" -"* `WebEvent::Click { ... }` is not exactly the same as `WebEvent::Click(Click)` with a top level `struct Click { ... }`. The inlined version cannot implement " -"traits, for example. \n" +"* `WebEvent::Click { ... }` is not exactly the same as `WebEvent::Click(Click)` with a top level `struct Click { ... }`. The inlined version cannot implement traits, for example. \n" " " msgstr "" @@ -5000,8 +4939,7 @@ msgstr "" msgid "" "* It can be helpful to introduce methods by comparing them to functions.\n" " * Methods are called on an instance of a type (such as a struct or enum), the first parameter represents the instance as `self`.\n" -" * Developers may choose to use methods to take advantage of method receiver syntax and to help keep them more organized. By using methods we can keep all " -"the implementation code in one predictable place.\n" +" * Developers may choose to use methods to take advantage of method receiver syntax and to help keep them more organized. By using methods we can keep all the implementation code in one predictable place.\n" "* Point out the use of the keyword `self`, a method receiver. \n" " * Show that it is an abbreviated term for `self:&Self` and perhaps show how the struct name could also be used. \n" " * Explain that `Self` is a type alias for the type the `impl` block is in and can be used elsewhere in the block.\n" @@ -5104,8 +5042,8 @@ msgid "" "* All four methods here use a different method receiver.\n" " * You can point out how that changes what the function can do with the variable values and if/how it can be used again in `main`.\n" " * You can showcase the error that appears when trying to call `finish` twice.\n" -"* Note that although the method receivers are different, the non-static functions are called the same way in the main body. Rust enables automatic referencing " -"and dereferencing when calling methods. Rust automatically adds in the `&`, `*`, `muts` so that that object matches the method signature.\n" +"* Note that although the method receivers are different, the non-static functions are called the same way in the main body. Rust enables automatic referencing and dereferencing when calling methods. Rust " +"automatically adds in the `&`, `*`, `muts` so that that object matches the method signature.\n" "* You might point out that `print_laps` is using a vector that is iterated over. We describe vectors in more detail in the afternoon. " msgstr "" @@ -5202,8 +5140,7 @@ msgstr "" #: src/pattern-matching/destructuring-enums.md:36 msgid "" "* The `if`/`else` expression is returning an enum that is later unpacked with a `match`.\n" -"* You can try adding a third variant to the enum definition and displaying the errors when running the code. Point out the places where your code is now " -"inexhaustive and how the compiler tries to give you hints." +"* You can try adding a third variant to the enum definition and displaying the errors when running the code. Point out the places where your code is now inexhaustive and how the compiler tries to give you hints." msgstr "" #: src/pattern-matching/destructuring-structs.md:1 @@ -5325,8 +5262,8 @@ msgstr "" #: src/pattern-matching/match-guards.md:23 msgid "" "* Match guards as a separate syntax feature are important and necessary when we wish to concisely express more complex ideas than patterns alone would allow.\n" -"* They are not the same as separate `if` expression inside of the match arm. An `if` expression inside of the branch block (after `=>`) happens after the " -"match arm is selected. Failing the `if` condition inside of that block won't result in other arms\n" +"* They are not the same as separate `if` expression inside of the match arm. An `if` expression inside of the branch block (after `=>`) happens after the match arm is selected. Failing the `if` condition inside " +"of that block won't result in other arms\n" "of the original `match` expression being considered. \n" "* You can use the variables defined in the pattern in your if expression.\n" "* The condition defined in the guard applies to every expression in a pattern with an `|`." @@ -5687,9 +5624,7 @@ msgid "" msgstr "" #: src/control-flow/if-expressions.md:35 -msgid "" -"Because `if` is an expression and must have a particular type, both of its branch blocks must have the same type. Consider showing what happens if you add `;` " -"after `x / 2` in the second example." +msgid "Because `if` is an expression and must have a particular type, both of its branch blocks must have the same type. Consider showing what happens if you add `;` after `x / 2` in the second example." msgstr "" #: src/control-flow/if-let-expressions.md:1 @@ -5728,8 +5663,8 @@ msgid "" "* `if let` can be more concise than `match`, e.g., when only one case is interesting. In contrast, `match` requires all branches to be covered.\n" "* A common usage is handling `Some` values when working with `Option`.\n" "* Unlike `match`, `if let` does not support guard clauses for pattern matching.\n" -"* Since 1.65, a similar [let-else](https://doc.rust-lang.org/rust-by-example/flow_control/let_else.html) construct allows to do a destructuring assignment, or " -"if it fails, have a non-returning block branch (panic/return/break/continue):\n" +"* Since 1.65, a similar [let-else](https://doc.rust-lang.org/rust-by-example/flow_control/let_else.html) construct allows to do a destructuring assignment, or if it fails, have a non-returning block branch " +"(panic/return/break/continue):\n" "\n" " ```rust,editable\n" " fn main() {\n" @@ -5806,8 +5741,8 @@ msgstr "" #: src/control-flow/while-let-expressions.md:26 msgid "" "* Point out that the `while let` loop will keep going as long as the value matches the pattern.\n" -"* You could rewrite the `while let` loop as an infinite loop with an if statement that breaks when there is no value to unwrap for `iter.next()`. The `while " -"let` provides syntactic sugar for the above scenario.\n" +"* You could rewrite the `while let` loop as an infinite loop with an if statement that breaks when there is no value to unwrap for `iter.next()`. The `while let` provides syntactic sugar for the above " +"scenario.\n" " " msgstr "" @@ -6088,14 +6023,13 @@ msgstr "" msgid "" "* `String::new` returns a new empty string, use `String::with_capacity` when you know how much data you want to push to the string.\n" "* `String::len` returns the size of the `String` in bytes (which can be different from its length in characters).\n" -"* `String::chars` returns an iterator over the actual characters. Note that a `char` can be different from what a human will consider a \"character\" due to " -"[grapheme clusters](https://docs.rs/unicode-segmentation/latest/unicode_segmentation/struct.Graphemes.html).\n" +"* `String::chars` returns an iterator over the actual characters. Note that a `char` can be different from what a human will consider a \"character\" due to [grapheme clusters](https://docs.rs/unicode-" +"segmentation/latest/unicode_segmentation/struct.Graphemes.html).\n" "* When people refer to strings they could either be talking about `&str` or `String`. \n" "* When a type implements `Deref`, the compiler will let you transparently call methods from `T`.\n" " * `String` implements `Deref` which transparently gives it access to `str`'s methods.\n" " * Write and compare `let s3 = s1.deref();` and `let s3 = &*s1`;.\n" -"* `String` is implemented as a wrapper around a vector of bytes, many of the operations you see supported on vectors are also supported on `String`, but with " -"some extra guarantees.\n" +"* `String` is implemented as a wrapper around a vector of bytes, many of the operations you see supported on vectors are also supported on `String`, but with some extra guarantees.\n" "* Compare the different ways to index a `String`:\n" " * To a character by using `s3.chars().nth(i).unwrap()` where `i` is in-bound, out-of-bounds.\n" " * To a substring by using `s3[0..4]`, where that slice is on character boundaries or not." @@ -6202,8 +6136,8 @@ msgstr "" #: src/std/hashmap.md:38 msgid "" "* `HashMap` is not defined in the prelude and needs to be brought into scope.\n" -"* Try the following lines of code. The first line will see if a book is in the hashmap and if not return an alternative value. The second line will insert the " -"alternative value in the hashmap if the book is not found.\n" +"* Try the following lines of code. The first line will see if a book is in the hashmap and if not return an alternative value. The second line will insert the alternative value in the hashmap if the book is not " +"found.\n" "\n" " ```rust,ignore\n" " let pc1 = page_counts\n" @@ -6275,8 +6209,7 @@ msgid "" "* In the above example, you can even leave out the `*` in the `println!` statement thanks to `Deref`. \n" "* A `Box` can be useful when you:\n" " * have a type whose size that can't be known at compile time, but the Rust compiler wants to know an exact size.\n" -" * want to transfer ownership of a large amount of data. To avoid copying large amounts of data on the stack, instead store the data on the heap in a `Box` " -"so only the pointer is moved." +" * want to transfer ownership of a large amount of data. To avoid copying large amounts of data on the stack, instead store the data on the heap in a `Box` so only the pointer is moved." msgstr "" #: src/std/box-recursive.md:1 @@ -6327,8 +6260,7 @@ msgid "" "* `Box` solves this problem as it has the same size as a regular pointer and just points at the next\n" "element of the `List` in the heap.\n" "\n" -"* Remove the `Box` in the List definition and show the compiler error. \"Recursive with indirection\" is a hint you might want to use a Box or reference of " -"some kind, instead of storing a value directly. \n" +"* Remove the `Box` in the List definition and show the compiler error. \"Recursive with indirection\" is a hint you might want to use a Box or reference of some kind, instead of storing a value directly. \n" " " msgstr "" @@ -6396,12 +6328,11 @@ msgstr "" msgid "" "* `Rc`'s count ensures that its contained value is valid for as long as there are references.\n" "* Like C++'s `std::shared_ptr`.\n" -"* `Rc::clone` is cheap: it creates a pointer to the same allocation and increases the reference count. Does not make a deep clone and can generally be ignored " -"when looking for performance issues in code.\n" +"* `Rc::clone` is cheap: it creates a pointer to the same allocation and increases the reference count. Does not make a deep clone and can generally be ignored when looking for performance issues in code.\n" "* `make_mut` actually clones the inner value if necessary (\"clone-on-write\") and returns a mutable reference.\n" "* Use `Rc::strong_count` to check the reference count.\n" -"* Compare the different datatypes mentioned. `Box` enables (im)mutable borrows that are enforced at compile time. `RefCell` enables (im)mutable borrows that " -"are enforced at run time and will panic if it fails at runtime.\n" +"* Compare the different datatypes mentioned. `Box` enables (im)mutable borrows that are enforced at compile time. `RefCell` enables (im)mutable borrows that are enforced at run time and will panic if it fails " +"at runtime.\n" "* `Rc::downgrade` gives you a *weakly reference-counted* object to\n" " create cycles that will be dropped properly (likely in combination with\n" " `RefCell`)." @@ -7111,8 +7042,8 @@ msgstr "" msgid "" "* Types that implement a given trait may be of different sizes. This makes it impossible to have things like `Vec` in the example above.\n" "* `dyn Pet` is a way to tell the compiler about a dynamically sized type that implements `Pet`.\n" -"* In the example, `pets` holds *fat pointers* to objects that implement `Pet`. The fat pointer consists of two components, a pointer to the actual object and " -"a pointer to the virtual method table for the `Pet` implementation of that particular object.\n" +"* In the example, `pets` holds *fat pointers* to objects that implement `Pet`. The fat pointer consists of two components, a pointer to the actual object and a pointer to the virtual method table for the `Pet` " +"implementation of that particular object.\n" "* Compare these outputs in the above example:\n" " ```rust,ignore\n" " println!(\"{} {}\", std::mem::size_of::(), std::mem::size_of::());\n" @@ -9812,8 +9743,7 @@ msgstr "" msgid "Add this to your `Android.bp` file:" msgstr "" -#: src/android/interoperability/with-c/bindgen.md:35 src/android/interoperability/with-c/bindgen.md:55 src/android/interoperability/with-c/bindgen.md:69 -#: src/android/interoperability/with-c/bindgen.md:108 +#: src/android/interoperability/with-c/bindgen.md:35 src/android/interoperability/with-c/bindgen.md:55 src/android/interoperability/with-c/bindgen.md:69 src/android/interoperability/with-c/bindgen.md:108 msgid "_interoperability/bindgen/Android.bp_:" msgstr "" @@ -10184,8 +10114,7 @@ msgid "" "```" msgstr "" -#: src/exercises/android/morning.md:1 src/exercises/bare-metal/morning.md:1 src/exercises/bare-metal/afternoon.md:1 src/exercises/concurrency/morning.md:1 -#: src/exercises/concurrency/afternoon.md:1 +#: src/exercises/android/morning.md:1 src/exercises/bare-metal/morning.md:1 src/exercises/bare-metal/afternoon.md:1 src/exercises/concurrency/morning.md:1 src/exercises/concurrency/afternoon.md:1 msgid "# Exercises" msgstr "" @@ -10210,7 +10139,7 @@ msgstr "" #: src/bare-metal.md:1 msgid "# Welcome to Bare Metal Rust" -msgstr "# Bare Metal Rust āĻ āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āĻŦāĻžāĻ—āϤāĻŽ" +msgstr "" #: src/bare-metal.md:3 msgid "" @@ -10271,7 +10200,7 @@ msgstr "" #: src/bare-metal.md:38 msgid "On MacOS:" -msgstr "MacOS āĻāσ" +msgstr "" #: src/bare-metal.md:40 msgid "" @@ -10578,8 +10507,7 @@ msgstr "" msgid "* GPIO 0 pin 21 is connected to the first column of the LED matrix, and pin 28 to the first row." msgstr "" -#: src/bare-metal/microcontrollers/mmio.md:66 src/bare-metal/microcontrollers/pacs.md:59 src/bare-metal/microcontrollers/hals.md:43 -#: src/bare-metal/microcontrollers/board-support.md:34 +#: src/bare-metal/microcontrollers/mmio.md:66 src/bare-metal/microcontrollers/pacs.md:59 src/bare-metal/microcontrollers/hals.md:43 src/bare-metal/microcontrollers/board-support.md:34 msgid "Run the example with:" msgstr "" @@ -11026,8 +10954,8 @@ msgstr "" msgid "`src/main.rs`:" msgstr "" -#: src/exercises/bare-metal/compass.md:28 src/exercises/bare-metal/rtc.md:21 src/exercises/concurrency/dining-philosophers.md:17 -#: src/exercises/concurrency/link-checker.md:55 src/exercises/concurrency/dining-philosophers-async.md:11 src/exercises/concurrency/elevator.md:19 +#: src/exercises/bare-metal/compass.md:28 src/exercises/bare-metal/rtc.md:21 src/exercises/concurrency/dining-philosophers.md:17 src/exercises/concurrency/link-checker.md:55 +#: src/exercises/concurrency/dining-philosophers-async.md:11 src/exercises/concurrency/elevator.md:19 msgid "" msgstr "" @@ -11072,8 +11000,8 @@ msgstr "" msgid "`Cargo.toml` (you shouldn't need to change this):" msgstr "" -#: src/exercises/bare-metal/compass.md:66 src/exercises/bare-metal/rtc.md:387 src/exercises/concurrency/dining-philosophers.md:63 -#: src/exercises/concurrency/link-checker.md:35 src/exercises/concurrency/dining-philosophers-async.md:60 src/exercises/concurrency/elevator.md:367 +#: src/exercises/bare-metal/compass.md:66 src/exercises/bare-metal/rtc.md:387 src/exercises/concurrency/dining-philosophers.md:63 src/exercises/concurrency/link-checker.md:35 +#: src/exercises/concurrency/dining-philosophers-async.md:60 src/exercises/concurrency/elevator.md:367 msgid "" msgstr "" @@ -13163,7 +13091,7 @@ msgstr "" #: src/concurrency.md:1 msgid "# Welcome to Concurrency in Rust" -msgstr "# Concurrency in Rust āĻ āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āĻŦāĻžāĻ—āϤāĻŽ" +msgstr "" #: src/concurrency.md:3 msgid "" @@ -13279,12 +13207,10 @@ msgid "" "* Normal Rust borrowing rules apply: you can either borrow mutably by one thread, or immutably by any number of threads.\n" " " msgstr "" -"* āĻāϰ āĻ•āĻžāϰāύ āĻšāϞ⧋ āĻāχ āϝ⧇ āϝāĻ–āύ `thread::scope` āϏāĻŽā§āĻĒā§‚āĻ°ā§āύ āĻšā§Ÿ, āϤāĻ–āύ āϏāĻŽāĻ¸ā§āϤ thread āϗ⧁āϞ⧋ āϝ⧋āĻ—āĻĻāĻžāύ⧇āϰ āύāĻŋāĻļā§āϚ⧟āϤāĻž āĻĻā§‡ā§Ÿ, āϝāĻžāϤ⧇ āϤāĻžāϰāĻž āϧāĻžāϰ āĻ•āϰāĻž data āĻĢ⧇āϰāϤ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n" -"* āϏāĻžāϧāĻžāϰāύ Rust āϧāĻžāϰ āύ⧇āĻ“ā§ŸāĻžāϰ āύāĻŋ⧟āĻŽ āĻĒā§āϰāϝ⧋āĻœā§āϝāσ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ thread āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻ¨ā§€ā§ŸāĻ­āĻžāĻŦ⧇ āĻ…āĻĨāĻŦāĻž āϝ⧇āϕ⧋āύ⧋ āϏāĻ‚āĻ–ā§āϝāĻ• thread āĻĻā§āĻŦāĻžāϰāĻž āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻ¨ā§€ā§ŸāĻ­āĻžāĻŦ⧇ āϧāĻžāϰ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ " #: src/concurrency/channels.md:1 msgid "# Channels" -msgstr "# āĻšā§āϝāĻžāύ⧇āϞ" +msgstr "" #: src/concurrency/channels.md:3 msgid "" @@ -13324,7 +13250,7 @@ msgstr "" #: src/concurrency/channels/unbounded.md:1 msgid "# Unbounded Channels" -msgstr "# āϏāĻŋāĻŽāĻžāĻšā§€āύ āĻšā§āϝāĻžāύ⧇āϞāϗ⧁āϞ⧋" +msgstr "" #: src/concurrency/channels/unbounded.md:3 msgid "You get an unbounded and asynchronous channel with `mpsc::channel()`:" @@ -13359,7 +13285,7 @@ msgstr "" #: src/concurrency/channels/bounded.md:1 msgid "# Bounded Channels" -msgstr "# āϏ⧀āĻŽāĻžāύāĻžāϝ⧁āĻ•ā§āϤ āĻšā§āϝāĻžāύ⧇āϞāϗ⧁āϞ⧋" +msgstr "" #: src/concurrency/channels/bounded.md:3 msgid "Bounded and synchronous channels make `send` block the current thread:" @@ -13462,16 +13388,13 @@ msgid "> `T` is `Sync` if and only if `&T` is `Send`" msgstr "" #: src/concurrency/send-sync/sync.md:14 -msgid "" -"This statement is essentially a shorthand way of saying that if a type is thread-safe for shared use, it is also thread-safe to pass references of it across " -"threads." +msgid "This statement is essentially a shorthand way of saying that if a type is thread-safe for shared use, it is also thread-safe to pass references of it across threads." msgstr "" #: src/concurrency/send-sync/sync.md:16 msgid "" -"This is because if a type is Sync it means that it can be shared across multiple threads without the risk of data races or other synchronization issues, so it " -"is safe to move it to another thread. A reference to the type is also safe to move to another thread, because the data it references can be accessed from any " -"thread safely." +"This is because if a type is Sync it means that it can be shared across multiple threads without the risk of data races or other synchronization issues, so it is safe to move it to another thread. A reference " +"to the type is also safe to move to another thread, because the data it references can be accessed from any thread safely." msgstr "" #: src/concurrency/send-sync/examples.md:1 @@ -14536,8 +14459,8 @@ msgstr "" #: src/async/pitfalls.md:3 msgid "" -"Async / await provides convenient and efficient abstraction for concurrent asynchronous programming. However, the async/await model in Rust also comes with " -"its share of pitfalls and footguns. We illustrate some of them in this chapter:" +"Async / await provides convenient and efficient abstraction for concurrent asynchronous programming. However, the async/await model in Rust also comes with its share of pitfalls and footguns. We illustrate some " +"of them in this chapter:" msgstr "" #: src/async/pitfalls.md:5 @@ -14734,8 +14657,8 @@ msgstr "" #: src/async/pitfalls/async-traits.md:3 msgid "" -"Async methods in traits are not yet supported in the stable channel ([An experimental feature exists in nightly and should be stabilized in the mid term.]" -"(https://blog.rust-lang.org/inside-rust/2022/11/17/async-fn-in-trait-nightly.html))" +"Async methods in traits are not yet supported in the stable channel ([An experimental feature exists in nightly and should be stabilized in the mid term.](https://blog.rust-lang.org/inside-rust/2022/11/17/async-" +"fn-in-trait-nightly.html))" msgstr "" #: src/async/pitfalls/async-traits.md:5 @@ -14934,7 +14857,7 @@ msgstr "" #: src/exercises/concurrency/elevator.md:12 msgid "## Getting Started" -msgstr "## āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•" +msgstr "" #: src/exercises/concurrency/elevator.md:14 msgid "" @@ -15382,7 +15305,7 @@ msgid "" "_Thank you for taking Comprehensive Rust đŸĻ€!_ We hope you enjoyed it and that it\n" "was useful." msgstr "" -"_Comprehensive Rust đŸĻ€ āύ⧇āĻ“ā§ŸāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϕ⧇ āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ!_ āφāĻŽāϰāĻž āφāĻļāĻž āĻ•āϰāĻŋ āĻāϟāĻž āφāĻĒāύāĻŋ āωāĻĒāĻ­ā§‹āĻ— āĻ•āϰ⧇āϛ⧇āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ\n" +"Comprehensive Rust đŸĻ€ āϕ⧋āĻ°ā§āϏāϟāĻŋ āύ⧇āĻ“ā§ŸāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϕ⧇ āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ! āφāĻŽāϰāĻž āφāĻļāĻž āĻ•āϰāĻŋ āφāĻĒāύāĻŋ āĻāϟāĻŋ āωāĻĒāĻ­ā§‹āĻ— āĻ•āϰ⧇āϛ⧇āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ\n" "āωāĻĒāĻ•āĻžāϰ⧀ āĻ›āĻŋāϞ⧋āĨ¤" #: src/thanks.md:6 @@ -15396,7 +15319,7 @@ msgstr "" #: src/other-resources.md:1 msgid "# Other Rust Resources" -msgstr "# āĻ…āĻ¨ā§āϝ Rust Resources" +msgstr "" #: src/other-resources.md:3 msgid "" @@ -15505,7 +15428,7 @@ msgstr "" #: src/credits.md:10 msgid "## Rust by Example" -msgstr "## āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ Rust" +msgstr "## āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϰāĻžāĻ¸ā§āϟ" #: src/credits.md:12 msgid "" @@ -15517,7 +15440,7 @@ msgstr "" #: src/credits.md:17 msgid "## Rust on Exercism" -msgstr "## āĻ…āύ⧁āĻļā§€āϞāύ⧇ Rust" +msgstr "## āĻ…āύ⧁āĻļā§€āϞāύ⧇ āϰāĻžāĻ¸ā§āϟ" #: src/credits.md:19 msgid "" @@ -15649,23 +15572,21 @@ msgstr "" #: src/exercises/day-1/solutions-morning.md:78 msgid "### Bonus question" -msgstr "### āĻŦā§‹āύāĻžāϏ āĻĒā§āϰāĻļā§āύ" +msgstr "" #: src/exercises/day-1/solutions-morning.md:80 msgid "" -"It requires more advanced concepts. It might seem that we could use a slice-of-slices (`&[&[i32]]`) as the input type to transpose and thus make our function " -"handle any size of matrix. However, this quickly breaks down: the return type cannot be `&[&[i32]]` since it needs to own the data you return." +"It requires more advanced concepts. It might seem that we could use a slice-of-slices (`&[&[i32]]`) as the input type to transpose and thus make our function handle any size of matrix. However, this quickly " +"breaks down: the return type cannot be `&[&[i32]]` since it needs to own the data you return." msgstr "" #: src/exercises/day-1/solutions-morning.md:82 msgid "" -"You can attempt to use something like `Vec>`, but this doesn't work out-of-the-box either: it's hard to convert from `Vec>` to `&[&[i32]]` " -"so now you cannot easily use `pretty_print` either." +"You can attempt to use something like `Vec>`, but this doesn't work out-of-the-box either: it's hard to convert from `Vec>` to `&[&[i32]]` so now you cannot easily use `pretty_print` either." msgstr "" #: src/exercises/day-1/solutions-morning.md:84 -msgid "" -"Once we get to traits and generics, we'll be able to use the [`std::convert::AsRef`][1] trait to abstract over anything that can be referenced as a slice." +msgid "Once we get to traits and generics, we'll be able to use the [`std::convert::AsRef`][1] trait to abstract over anything that can be referenced as a slice." msgstr "" #: src/exercises/day-1/solutions-morning.md:86