diff --git a/po/fa.po b/po/fa.po index 9b40efbb790..aa62fc1fbe4 100644 --- a/po/fa.po +++ b/po/fa.po @@ -4096,8 +4096,7 @@ msgid "" "transpose a matrix (turn rows into columns):" msgstr "" "از آرایه‌ای مشابه مثال بالا برای نوشتن تابع `transpose` " -"استفاده کنید که یک ماتریس را جابجا می‌کند (ردیف‌ها را به ستون‌ها تبدیل " -"می‌کند):" +"استفاده کنید که یک ماتریس را جابجا می‌کند (ردیف‌ها را به ستون‌ها تبدیل می‌کند):" #: src/tuples-and-arrays/exercise.md:22 msgid "" @@ -22788,1449 +22787,4 @@ msgstr "" #~ "slides):" #~ msgstr "" #~ "اینجا مکان مناسبی برای یک برنامه ریزی است.,اگر که شما این موضوع را در " -#~ "کلاس درس می دهیدما پیشنهاد می کنیم که روز را به دو قسمت تقسیم " -#~ "کنید(اسلاید‌ها را دنبال کنید)" - -#~ msgid "Morning: 9:00 to 12:00," -#~ msgstr "صبح: ۹:۰۰ تا ۱۲:۰۰" - -#~ msgid "Afternoon: 13:00 to 16:00." -#~ msgstr "بعد از ظهر: ۱۳:۰۰ تا ۱۶:۰۰" - -#~ msgid "" -#~ "You can of course adjust this as necessary. Please make sure to include " -#~ "breaks, we recommend a break every hour!" -#~ msgstr "" -#~ "البته می‌توانید این را بر‌حسب نیاز تنظیم کنید. لطفا مطمئن شوید که استراحت‌ها " -#~ "را نیز درنظر بگیرید، ما توصیه می‌کنیم هر ساعت یک استراحت داشته باشید!" - -#~ msgid "Here is a small example program in Rust:" -#~ msgstr "یک برنامه کوچیک در Rust:" - -#~ msgid "" -#~ "```rust,editable\n" -#~ "fn main() { // Program entry point\n" -#~ " let mut x: i32 = 6; // Mutable variable binding\n" -#~ " print!(\"{x}\"); // Macro for printing, like printf\n" -#~ " while x != 1 { // No parenthesis around expression\n" -#~ " if x % 2 == 0 { // Math like in other languages\n" -#~ " x = x / 2;\n" -#~ " } else {\n" -#~ " x = 3 * x + 1;\n" -#~ " }\n" -#~ " print!(\" -> {x}\");\n" -#~ " }\n" -#~ " println!();\n" -#~ "}\n" -#~ "```" -#~ msgstr "" -#~ "```rust,editable\n" -#~ "fn main() { // نقطه ورودی برنامه\n" -#~ " let mut x: i32 = 6; //انتساب متغیر قابل تغییر\n" -#~ " print!(\"{x}\"); // ماکرویی برای چاپ‌کردن به مانند printf\n" -#~ " while x != 1 { // هیچ پرانتزی اطراف دستور نیست\n" -#~ " if x % 2 == 0 { // محاسبات مانند بقیه زبان ها \n" -#~ " x = x / 2;\n" -#~ " } else {\n" -#~ " x = 3 * x + 1;\n" -#~ " }\n" -#~ " print!(\" -> {x}\");\n" -#~ " }\n" -#~ " println!();\n" -#~ "}\n" -#~ "```" - -#~ msgid "" -#~ "The code implements the Collatz conjecture: it is believed that the loop " -#~ "will always end, but this is not yet proved. Edit the code and play with " -#~ "different inputs." -#~ msgstr "" -#~ "این کد حدس کولاتز (`Collatz conjecture`) را پیاده سازی می کند: اعتقاد بر " -#~ "این است که حلقه همیشه تمام می شود، اما این هنوز ثابت نشده است. کد را " -#~ "ویرایش کنید و با ورودی‌های مختلف بازی کنید." - -#~ msgid "" -#~ "Explain that all variables are statically typed. Try removing `i32` to " -#~ "trigger type inference. Try with `i8` instead and trigger a runtime " -#~ "integer overflow." -#~ msgstr "" -#~ "توضیح دهید که همه متغیرها از نوع استاتیک هستند. سعی کنید `i32` را حذف " -#~ "کنید تا استنتاج نوع را فعال کنید. با `i8` امتحان کنید و سرریز " -#~ "(`overflow`) عدد صحیح در زمان اجرا را فعال کنید.." - -#~ msgid "Change `let mut x` to `let x`, discuss the compiler error." -#~ msgstr "" -#~ "`let mut x` را به `let x` تغییر دهید، و خطای کامپایلر را بررسی کنید." - -#~ msgid "" -#~ "Show how `print!` gives a compilation error if the arguments don't match " -#~ "the format string." -#~ msgstr "" -#~ "نشان دهید که چگونه `print!` در صورت عدم تطابق " -#~ "آرگومان‌ها با قالب رشته (`format string`) ، خطای کامپایل می دهد." - -#~ msgid "" -#~ "Show how you need to use `{}` as a placeholder if you want to print an " -#~ "expression which is more complex than just a single variable." -#~ msgstr "" -#~ "نشان دهید که چگونه در صورت تمایل به چاپ عبارتی که پیچیده‌تر از یک متغیر " -#~ "واحد است، باید از ‍`{}` به عنوان جایگزین استفاده کنید." - -#~ msgid "" -#~ "Show the students the standard library, show them how to search for `std::" -#~ "fmt` which has the rules of the formatting mini-language. It's important " -#~ "that the students become familiar with searching in the standard library." -#~ msgstr "" -#~ "کتابخانه استاندارد را به دانشجویان نشان دهید، به آنها نشان دهید که چگونه " -#~ "`std::fmt` را که قوانین زبان-کوچک قالب‌بندی را دارد جستجو کنند. مهم است که " -#~ "دانشجویان با جستجو در کتابخانه استاندارد آشنا شوند." - -#~ msgid "" -#~ "In a shell `rustup doc std::fmt` will open a browser on the local std::" -#~ "fmt documentation" -#~ msgstr "" -#~ "در یک خط‌‌‌‌فرمان (`shell`) دستور `rustup doc std::fmt` را بزنید تا مستندات " -#~ "محلی ‍`std::fmt` را توی مرورگر باز کند." - -#~ msgid "Compile time memory safety." -#~ msgstr "ایمنی حافظه در زمان کامپایل." - -#~ msgid "Lack of undefined runtime behavior." -#~ msgstr "عدم وجود رفتار نامشخص در زمان اجرا." - -#~ msgid "Modern language features." -#~ msgstr "ویژگی‌های زبانی مدرن." - -#~ msgid "Let's consider the following \"minimum wrong example\" program in C:" -#~ msgstr "" -#~ "بیایید برنامه «نمونه ای از حداقل اشتباهات» زیر را در C در نظر بگیریم:" - -#~ msgid "How many bugs do you spot?" -#~ msgstr "چند باگ پیدا می کنید؟" - -#~ msgid "" -#~ "Despite just 29 lines of code, this C example contains serious bugs in at " -#~ "least 11:" -#~ msgstr "با وجود تنها ۲۹ خط کد، این مثال C حداقل 11 باگ جدی دارد: " - -#~ msgid "Assignment `=` instead of equality comparison `==` (line 28)" -#~ msgstr "تخصیص `=` به جای مقایسه برابری `==` (خط ۲۸)" - -#~ msgid "Excess argument to `printf` (line 23)" -#~ msgstr "ارگمان اضافی به `printf` (خط ۲۳)" - -#~ msgid "File descriptor leak (after line 26)" -#~ msgstr "نشت توصیفگر فایل (`File descriptor`) (پس از خط ۲۶)" - -#~ msgid "Forgotten braces in multi-line `if` (line 22)" -#~ msgstr "فراموشی پرانتز در `if` چند خطی (خط ۲۲)" - -#~ msgid "Forgotten `break` in a `switch` statement (line 32)" -#~ msgstr "فراموشی `break` در `switch` (خط ۳۲)" - -#~ msgid "" -#~ "Forgotten NUL-termination of the `buf` string, leading to a buffer " -#~ "overflow (line 29)" -#~ msgstr "فراموشی خاتمه `NUL` رشته `buf`، منجر به سرریز بافر (خط ۲۹) " - -#~ msgid "Memory leak by not freeing the `malloc`\\-allocated buffer (line 21)" -#~ msgstr "نشت حافظه با آزاد نکردن بافر اختصاص داده شده توسط `malloc` (خط ۲۱)" - -#~ msgid "Out-of-bounds access (line 17)" -#~ msgstr "دسترسی خارج از محدوده (خط ۱۷)" - -#~ msgid "Unchecked cases in the `switch` statement (line 11)" -#~ msgstr "حالات بررسی نشده در `switch` (خط ۱۱)" - -#~ msgid "Unchecked return values of `stat` and `fopen` (lines 18 and 26)" -#~ msgstr "مقادیر برگشتی از `stat` و `fopen` بررسی نشده (خطوط ۱۸ و ۲۶)" - -#~ msgid "" -#~ "_Shouldn't these bugs be obvious even for a C compiler?_ \n" -#~ "No, surprisingly this code compiles warning-free at the default warning " -#~ "level, even in the latest GCC version (13.2 as of writing)." -#~ msgstr "" -#~ "_آیا این باگها نباید برای یک کامپایلر C نمایان باشد؟_ \n" -#~ "نه، به طور شگفت انگیزی این کد بدون هیچ هشدار در سطح هشدار(`warning`) پیش " -#~ "فرض کامپایل می شود، حتی در آخرین نسخه GCC (۱۳.۲ این کتاب در زمان نوشتن)." - -#~ msgid "" -#~ "_Isn't this a highly unrealistic example?_ \n" -#~ "Absolutely not, these kind of bugs have lead to serious security " -#~ "vulnerabilities in the past. Some examples:" -#~ msgstr "" -#~ "_آیا این یک مثال خیلی غیر واقعی نیست؟_ \n" -#~ "ابدا نه، این نوع از باگ‌ها در گذشته منجر به آسیب‌پذیری‌های امنیتی جدی " -#~ "شده‌اند. چند نمونه:" - -#~ msgid "" -#~ "Assignment `=` instead of equality comparison `==`: [The Linux Backdoor " -#~ "Attempt of 2003](https://freedom-to-tinker.com/2013/10/09/the-linux-" -#~ "backdoor-attempt-of-2003)" -#~ msgstr "" -#~ "تخصیص `=` به جای مقایسه برابر بودن `==`: [The Linux Backdoor Attempt of " -#~ "2003](https://freedom-to-tinker.com/2013/10/09/the-linux-backdoor-attempt-" -#~ "of-2003)" - -#~ msgid "" -#~ "Forgotten braces in multi-line `if`: [The Apple goto fail vulnerability]" -#~ "(https://dwheeler.com/essays/apple-goto-fail.html)" -#~ msgstr "" -#~ "فراموشی پرانتز در `if` چند خطی: [The Apple goto fail vulnerability]" -#~ "(https://dwheeler.com/essays/apple-goto-fail.html)" - -#~ msgid "" -#~ "Forgotten `break` in a `switch` statement: [The break that broke sudo]" -#~ "(https://nakedsecurity.sophos.com/2012/05/21/anatomy-of-a-security-hole-" -#~ "the-break-that-broke-sudo)" -#~ msgstr "" -#~ "فراموشی گذاشتن `break` در `switch`: [The break that broke " -#~ "sudo](https://nakedsecurity.sophos.com/2012/05/21/anatomy-of-a-security-" -#~ "hole-the-break-that-broke-sudo) " - -#~ msgid "" -#~ "_How is Rust any better here?_ \n" -#~ "Safe Rust makes all of these bugs impossible:" -#~ msgstr "" -#~ "_چطوری زبان راست در اینجا بهتر عمل می‌کند?_ \n" -#~ "راست ایمن تمام این باگ‌ها را غیرممکن می‌کند:" - -#~ msgid "Assignments inside an `if` clause are not supported." -#~ msgstr "تخصیص‌ها در داخل یک شرط `if` پشتیبانی نمی‌شوند." - -#~ msgid "Format strings are checked at compile-time." -#~ msgstr "قالب‌بندی رشته‌ها در زمان کامپایل بررسی می‌شوند." - -#~ msgid "Resources are freed at the end of scope via the `Drop` trait." -#~ msgstr "منابع در پایان اسکوپ از طریق ویژگی `Drop` آزاد می‌شوند." - -#~ msgid "All `if` clauses require braces." -#~ msgstr "همه شرط‌های `if` نیاز به پرانتز دارند." - -#~ msgid "" -#~ "`match` (as the Rust equivalent to `switch`) does not fall-through, hence " -#~ "you can't accidentally forget a `break`." -#~ msgstr "" -#~ "دستور`match` (به عنوان معادل Rust برای `switch`) فرو نمی‌پاشد (منظور fall-" -#~ "through پذیر بودن ان است) ، بنابراین نمی‌توانید به طور تصادفی یک break را " -#~ "فراموش کنید." - -#~ msgid "Buffer slices carry their size and don't rely on a NUL terminator." -#~ msgstr "" -#~ "برش‌های بافر اندازه خود را حمل می‌کنند و به خاتمه دهنده `NUL` متکی نیستند." - -#~ msgid "" -#~ "Heap-allocated memory is freed via the `Drop` trait when the " -#~ "corresponding `Box` leaves the scope." -#~ msgstr "" -#~ "حافظه اختصاص داده شده به پشته از طریق ویژگی `Drop` زمانی آزاد می‌شود که " -#~ "`Box` مورد نظر اسکوپ مربوطه را ترک کند.‍" - -#~ msgid "" -#~ "Out-of-bounds accesses cause a panic or can be checked via the `get` " -#~ "method of a slice." -#~ msgstr "" -#~ "دسترسی‌های خارج از محدوده باعث پانیک می‌شوند یا می‌توان آنها را از طریق متد " -#~ "get یک برش (`slice`) بررسی کرد." - -#~ msgid "`match` mandates that all cases are handled." -#~ msgstr "دستور `match` الزام می‌کند که حالات بررسی شوند." - -#~ msgid "" -#~ "Fallible Rust functions return `Result` values that need to be unwrapped " -#~ "and thereby checked for success. Additionally, the compiler emits a " -#~ "warning if you miss to check the return value of a function marked with " -#~ "`#[must_use]`." -#~ msgstr "" -#~ "توابع خطا پذیر در زبان Rust مقدار Result را برمی‌گردانند که باید باز شوند " -#~ "و در نتیجه برای موفقیت بررسی شوند. علاوه بر این، اگر بررسی مقدار برگشتی " -#~ "تابعی که با `#[must_use]` علامت گذاری شده است را " -#~ "فراموش کنید، کامپایلر هشدار می‌دهد." - -#~ msgid "Static memory management at compile time:" -#~ msgstr "مدیریت حافظه ایستا در زمان کامپایل:" - -#~ msgid "No memory leaks (_mostly_, see notes)." -#~ msgstr "" -#~ "هیچ نشت حافظه‌ای وجود ندارد (_به طور کلی_، به یادداشت‌ها مراجعه کنید)." - -#~ msgid "" -#~ "It is possible to produce memory leaks in (safe) Rust. Some examples are:" -#~ msgstr "" -#~ "ایجاد نشت حافظه در Rust (ایمن) امکان‌پذیر است. برخی از نمونه‌ها عبارتند از:" - -#~ msgid "" -#~ "You can use [`Box::leak`](https://doc.rust-lang.org/std/boxed/struct.Box." -#~ "html#method.leak) to leak a pointer. A use of this could be to get " -#~ "runtime-initialized and runtime-sized static variables" -#~ msgstr "" -#~ "می توانید از [`Box::leak`](https://doc.rust-lang.org/std/" -#~ "boxed/struct.Box.html#method.leak) برای نشت دادن یک اشاره‌گر " -#~ "استفاده کنید.یک مورد استفاده از این کار می‌تواند برای بدست آوردن متغیرهای " -#~ "ایستا با مقداردهی اولیه و اندازه در زمان اجرا باشد." - -#~ msgid "" -#~ "You can use [`std::mem::forget`](https://doc.rust-lang.org/std/mem/fn." -#~ "forget.html) to make the compiler \"forget\" about a value (meaning the " -#~ "destructor is never run)." -#~ msgstr "" -#~ "می توانید از [`std::mem::forget`](https://doc.rust-lang.org/" -#~ "std/mem/fn.forget.html) استفاده کنید تا کامپایلر «مقدار» را " -#~ "فراموش کند (به این معنا که تابع مخرب (`destructor`) هرگز اجرا نمی‌شود)." - -#~ msgid "" -#~ "You can also accidentally create a [reference cycle](https://doc.rust-" -#~ "lang.org/book/ch15-06-reference-cycles.html) with `Rc` or `Arc`." -#~ msgstr "" -#~ "همچنین می‌توانید به طور تصادفی یک [چرخه ارجاع](https://doc.rust-lang.org/" -#~ "book/ch15-06-reference-cycles.html) با `Rc` یا `Arc` ایجاد کنید." - -#~ msgid "" -#~ "In fact, some will consider infinitely populating a collection a memory " -#~ "leak and Rust does not protect from those." -#~ msgstr "" -#~ "در واقع، برخی از افراد پر کردن بی نهایت یک مجموعه را به عنوان نشت حافظه " -#~ "در نظر می‌گیرند و Rust از آن محافظت نمی‌کند." - -#~ msgid "" -#~ "For the purpose of this course, \"No memory leaks\" should be understood " -#~ "as \"Pretty much no _accidental_ memory leaks\"." -#~ msgstr "" -#~ "برای این دوره، «هیچ نشت حافظه ای» باید به عنوان «تقریبا هیچ نشت حافظه " -#~ "_تصادفی_» درنظر گرفته شود." - -#~ msgid "" -#~ "Integer overflow is defined via the [`overflow-checks`](https://doc.rust-" -#~ "lang.org/rustc/codegen-options/index.html#overflow-checks) compile-time " -#~ "flag. If enabled, the program will panic (a controlled crash of the " -#~ "program), otherwise you get wrap-around semantics. By default, you get " -#~ "panics in debug mode (`cargo build`) and wrap-around in release mode " -#~ "(`cargo build --release`)." -#~ msgstr "" -#~ "سرریز عدد صحیح از طریق پرچم زمان کامپایل [`overflow-checks`](https://doc." -#~ "rust-lang.org/rustc/codegen-options/index.html#overflow-checks) تعریف شده " -#~ "است. اگر فعال باشد، برنامه خطا خواهد کرد (یک خرابی به صورت کنترل شده)، در " -#~ "غیر این صورت wrap-around خواهید داشت.به طور پیش فرض، در حالت توسعه `debug " -#~ "(cargo build)` شما خطا خواهید داشت. و در حالت گرفتن خروجی برای پروداکشن " -#~ "`release (cargo build --release)` حالت wrap-around خواهید داشت." - -#~ msgid "" -#~ "Bounds checking cannot be disabled with a compiler flag. It can also not " -#~ "be disabled directly with the `unsafe` keyword. However, `unsafe` allows " -#~ "you to call functions such as `slice::get_unchecked` which does not do " -#~ "bounds checking." -#~ msgstr "" -#~ "بررسی محدوده نمی‌تواند با پرچم کامپایل غیرفعال شود. همچنین نمی‌توان آن را " -#~ "به طور مستقیم با کلمه کلیدی `unsafe` غیرفعال کرد. با این حال، `unsafe` به " -#~ "شما امکان می‌دهد توابعی مانند `slice::get_unchecked` را صدا بزنید که بررسی " -#~ "محدوده را انجام نمی‌دهد. " - -#~ msgid "Rust is built with all the experience gained in the last decades." -#~ msgstr "" -#~ "زبان Rust با استفاده از تمام تجربیاتی که در دهه‌های گذشته به دست آمده " -#~ "ساخته شده است." - -#~ msgid "Language Features" -#~ msgstr "ویژگی‌های زبان" - -#~ msgid "Tooling" -#~ msgstr "ابزارها" - -#~ msgid "" -#~ "Zero-cost abstractions, similar to C++, means that you don't have to " -#~ "'pay' for higher-level programming constructs with memory or CPU. For " -#~ "example, writing a loop using `for` should result in roughly the same low " -#~ "level instructions as using the `.iter().fold()` construct." -#~ msgstr "" -#~ "انتزاع‌های بدون هزینه، مشابه C++، به این معنی است که " -#~ "شما مجبور نیستید برای ساختارهای برنامه‌نویسی سطح بالاتر با حافظه یا CPU " -#~ "«هزینه»‌ای پرداخت کنید. به عنوان مثال، نوشتن یک حلقه با استفاده از for " -#~ "باید تقریباً به همان دستورالعمل‌های سطح پایین به عنوان استفاده از ساختار " -#~ "`iter().fold()` منجر شود." - -#~ msgid "" -#~ "It may be worth mentioning that Rust enums are 'Algebraic Data Types', " -#~ "also known as 'sum types', which allow the type system to express things " -#~ "like `Option` and `Result`." -#~ msgstr "" -#~ "ارزش ذکر را دارد که Enum‌های زبان Rust از «انواع داده جبری» هستند که " -#~ "همچنین به عنوان «انواع جمع» شناخته می‌شوند، که به تایپ‌ سیستم اجازه می‌دهد " -#~ "چیزهایی مانند `Option` و `Result` را بیان کند." - -#~ msgid "" -#~ "Remind people to read the errors --- many developers have gotten used to " -#~ "ignore lengthy compiler output. The Rust compiler is significantly more " -#~ "talkative than other compilers. It will often provide you with " -#~ "_actionable_ feedback, ready to copy-paste into your code." -#~ msgstr "" -#~ "به افراد یادآوری کنید که خطاها را بخوانند --- بسیاری از توسعه دهندگان به " -#~ "نادیده گرفتن خروجی طولانی کامپایلر عادت کرده‌اند. کامپایلر Rust به طور " -#~ "قابل توجه‌ای پرحرف‌تر از سایر کامپایلرها است. اغلب بازخوردهای _عملیاتی_ را " -#~ "در اختیار شما قرار می‌دهد که آماده کپی و پیست کردن در کد شما هستند." - -#~ msgid "" -#~ "The Rust standard library is small compared to languages like Java, " -#~ "Python, and Go. Rust does not come with several things you might consider " -#~ "standard and essential:" -#~ msgstr "" -#~ "کتابخانه استاندارد Rust در مقایسه با زبان‌هایی مانند Java، Python و Go " -#~ "کوچک است. زبان Rust با چندین چیز که ممکن است آنها را استاندارد و ضروری " -#~ "در نظر بگیرید همراه نیست:" - -#~ msgid "a random number generator, but see [rand](https://docs.rs/rand/)." -#~ msgstr "" -#~ "یک تولید‌کننده عدد تصادفی، اما [کتابخانه `rand`](https://" -#~ "docs.rs/rand/) را ببینید." - -#~ msgid "support for SSL or TLS, but see [rusttls](https://docs.rs/rustls/)." -#~ msgstr "" -#~ "پشتیبانی از SSL یا TLS، اما میتوانید [کتابخانه `rusttls`]" -#~ "(https://docs.rs/rustls/) را ببینید." - -#~ msgid "support for JSON, but see [serde_json](https://docs.rs/serde_json/)." -#~ msgstr "" -#~ "پشتیبانی از JSON، اما [کتابخانه `serde_json`](https://docs." -#~ "rs/serde_json/) را ببینید." - -#~ msgid "" -#~ "The reasoning behind this is that functionality in the standard library " -#~ "cannot go away, so it has to be very stable. For the examples above, the " -#~ "Rust community is still working on finding the best solution --- and " -#~ "perhaps there isn't a single \"best solution\" for some of these things." -#~ msgstr "" -#~ "منطق پشت این امر این است که نمیتوان عملکردی را از کتابخانه استاندارد حذف " -#~ "کرد، بنابراین باید بسیار پایدار باشد. برای مثال‌های بالا، جامعه Rust هنوز " -#~ "در تلاش است تا بهترین راه حل را پیدا کند --- و شاید برای برخی از این " -#~ "موارد، یک «بهترین راه حل» وجود نداشته باشد. " - -#~ msgid "" -#~ "Rust comes with a built-in package manager in the form of Cargo and this " -#~ "makes it trivial to download and compile third-party crates. A " -#~ "consequence of this is that the standard library can be smaller." -#~ msgstr "" -#~ "زبان Rust همراه با یک مدیر بسته درون-ساختی به اسم Cargo ارائه می شود و " -#~ "این امر دانلود و کامپایل کردن crates شخص ثالث را بسیار آسان می کند. یکی " -#~ "از پیامدهای این امر این است که کتابخانه استاندارد می تواند کوچکتر باشد." - -#~ msgid "" -#~ "Discovering good third-party crates can be a problem. Sites like help with this by letting you compare health metrics for crates " -#~ "to find a good and trusted one." -#~ msgstr "" -#~ "یافتن crates خوب شخص ثالث می تواند مشکل باشد. سایت‌هایی مانند با اجازه مقایسه معیارهای سلامت برای " -#~ "crates به شما کمک می‌کنند تا یک مورد خوب و قابل اعتماد را پیدا کنید." - -#~ msgid "" -#~ "[rust-analyzer](https://rust-analyzer.github.io/) is a well supported LSP " -#~ "implementation used in major IDEs and text editors." -#~ msgstr "" -#~ "[rust-analyzer](https://rust-analyzer.github.io/): یک پیاده سازی LSP است " -#~ "که در IDE‌ها و ویرایشگرهای متن اصلی استفاده می‌شود." - -#~ msgid "`\"foo\"`, `\"two\\nlines\"`" -#~ msgstr "" -#~ "\"foo\", \"two\n" -#~ "lines\"" - -#~ msgid "Like C++, Rust has references:" -#~ msgstr "مانند C++، راست دارای مراجع است:" - -#~ msgid "" -#~ "We must dereference `ref_x` when assigning to it, similar to C and C++ " -#~ "pointers." -#~ msgstr "" -#~ "باید هنگام تعریف `ref_x` ارجاع دهی شود، مشابه " -#~ "اشاره‌گرهای C و C++." - -#~ msgid "" -#~ "References that are declared as `mut` can be bound to different values " -#~ "over their lifetime." -#~ msgstr "" -#~ "مراجع‌ای که به‌عنوان `mut` تعریف می‌شوند، می‌توانند در طول عمر خود به مقادیر " -#~ "مختلفی ارجاع داده شوند." - -#~ msgid "A reference is said to \"borrow\" the value it refers to." -#~ msgstr "گفته می‌شود که یک مرجع مقدار مورد اشاره خود را «قرض می‌گیرد»." - -#~ msgid "" -#~ "Rust is tracking the lifetimes of all references to ensure they live long " -#~ "enough." -#~ msgstr "" -#~ "راست برای اینکه اطمینان حاصل کند طول‌عمر همه مراجع به اندازه کافی است, " -#~ "آنها را رهگیری می‌کند." - -#~ msgid "`String` vs `str`" -#~ msgstr "`String` در مقابل `str` " - -#~ msgid "" -#~ "You can borrow `&str` slices from `String` via `&` and optionally range " -#~ "selection." -#~ msgstr "" -#~ "شما می‌توانید برش‌های &str را از `String` از طریق `&` " -#~ "و انتخاب محدوده به صورت اختیاری، قرض بگیرید." - -#~ msgid "" -#~ "A Rust version of the famous [FizzBuzz](https://en.wikipedia.org/wiki/" -#~ "Fizz_buzz) interview question:" -#~ msgstr "" -#~ "یک نسخه راست از سوال مصاحبه معروف مصاحبه [FizzBuzz](https://en.wikipedia." -#~ "org/wiki/Fizz_buzz):" - -#~ msgid "" -#~ "We refer in `main` to a function written below. Neither forward " -#~ "declarations nor headers are necessary. " -#~ msgstr "" -#~ "ما در `main` به یک تابعی که در زیرش نوشته شده است " -#~ "اشاره می‌کنیم. نیازی به اعلان از قبل تابع `main` یا " -#~ "در بخش هدر نیست. " - -#~ msgid "" -#~ "The range expression in the `for` loop in `print_fizzbuzz_to()` contains " -#~ "`=n`, which causes it to include the upper bound." -#~ msgstr "" -#~ "عبارت تعیین محدوده در حلقه `for` در `print_fizzbuzz_to()` حاوی `=n` است " -#~ "که باعث می‌شود محدوده حد بالا را هم شامل شود (آخرین عنصر)." - -#~ msgid "" -#~ "All language items in Rust can be documented using special `///` syntax." -#~ msgstr "" -#~ "همه موارد زبان در راست را می‌توان با استفاده از سینتکس ویژه `///` مستند " -#~ "کرد." - -#~ msgid "" -#~ "This course does not include rustdoc on slides, just to save space, but " -#~ "in real code they should be present." -#~ msgstr "" -#~ "این دوره برای صرفه‌جویی در نوشتار متنی rustdoc را در اسلایدها قرار نمی‌دهد، " -#~ "اما در کدهای دنیای واقعی باید وجود داشته باشد." - -#~ msgid "" -#~ "Inner doc comments are discussed later (in the page on modules) and need " -#~ "not be addressed here." -#~ msgstr "" -#~ "کامنت های داخل کد در بخش‌های بعدی (در صفحه مربوط به ماژول‌ها) مورد بحث قرار " -#~ "می‌گیرد و نیازی به پرداختن به آنها در اینجا نیست." - -#~ msgid "" -#~ "Rustdoc comments can contain code snippets that we can run and test using " -#~ "`cargo test`. We will discuss these tests in the [Testing section](../" -#~ "testing/doc-tests.html)." -#~ msgstr "" -#~ "کامنت های rustdoc می‌توانند حاوی قطعه کدهایی باشند که می‌توانیم آنها را با " -#~ "استفاده از `cargo test` اجرا و تست کنیم. ما در " -#~ "[بخش تست نویسی](../testing/doc-tests.html) در مورد این تست‌ها بحث خواهیم " -#~ "کرد." - -#~ msgid "" -#~ "Methods are functions associated with a type. The `self` argument of a " -#~ "method is an instance of the type it is associated with:" -#~ msgstr "" -#~ "متدها، تابع‌هایی مربوط به یک نوع خاص هستند. آرگومان `self` یک متد، نمونه‌ای " -#~ "از نوعی است که با آن مرتبط است:" - -#~ msgid "" -#~ "We will look much more at methods in today's exercise and in tomorrow's " -#~ "class." -#~ msgstr "در تمرین امروز و کلاس فردا بیشتر به متدها می‌پردازیم." - -#~ msgid "" -#~ "Add a static method called `Rectangle::new` and call this from `main`:" -#~ msgstr "" -#~ "یک متد استاتیک به نام `Rectangle::new` اضافه کنید و " -#~ "آن را از `main` فراخوانی کنید:" - -#~ msgid "" -#~ "While _technically_, Rust does not have custom constructors, static " -#~ "methods are commonly used to initialize structs (but don't have to). The " -#~ "actual constructor, `Rectangle { width, height }`, could be called " -#~ "directly. See the [Rustnomicon](https://doc.rust-lang.org/nomicon/" -#~ "constructors.html)." -#~ msgstr "" -#~ "در حالی که از _نظر فنی_ راست یک متد سازنده خاص ندارد، معمولاً از متدهای " -#~ "استاتیک برای مقداردهی اولیه ساختارها استفاده می‌شود (اما الزامی نیست). " -#~ "سازنده اصلی ، `Rectangle { width, height }` ، را " -#~ "می‌توان به طور مستقیم فراخوانی کرد. برای اطلاعات بیشتر [Rustnomicon]" -#~ "(https://doc.rust-lang.org/nomicon/constructors.html) را ببینید." - -#~ msgid "" -#~ "Add a `Rectangle::square(width: u32)` constructor to illustrate that such " -#~ "static methods can take arbitrary parameters." -#~ msgstr "" -#~ "برای نشان دادن اینکه چنین متدهای استاتیک می‌توانند آرگومان‌های دلخواه " -#~ "بگیرند، با ارگمان‌های یک سازنده `Rectangle::square(width: " -#~ "u32)` اضافه کنید." - -#~ msgid "Function Overloading" -#~ msgstr "سربارگذاری تابع (Function Overloading)" - -#~ msgid "Overloading is not supported:" -#~ msgstr "سربارگذاری پشتیبانی نمیشود, چون:" - -#~ msgid "Always takes a fixed number of parameters." -#~ msgstr "همیشه تعداد ثابتی از آرگومان‌ها می‌گیرد." - -#~ msgid "Default values are not supported:" -#~ msgstr "مقادیر پیش‌فرض پشتیبانی نمی‌شوند:" - -#~ msgid "All call sites have the same number of arguments." -#~ msgstr "تمام محل‌های فراخوانی دارای تعداد یکسانی از آرگومان هستند." - -#~ msgid "Macros are sometimes used as an alternative." -#~ msgstr "گاهی اوقات از ماکروها به عنوان جایگزین استفاده می‌شود." - -#~ msgid "However, function parameters can be generic:" -#~ msgstr "با این حال، پارامترهای تابع می‌توانند جنریک باشند:" - -#~ msgid "" -#~ "When using generics, the standard library's `Into` can provide a kind " -#~ "of limited polymorphism on argument types. We will see more details in a " -#~ "later section." -#~ msgstr "" -#~ "هنگام استفاده از جنریک‌ها، `Into` کتابخانه " -#~ "استاندارد می‌تواند نوعی چندشکلی (polymorphism) محدود در انواع آرگومان‌ها " -#~ "فراهم کند. جزئیات بیشتر را در بخش‌های بعدی خواهیم دید." - -#~ msgid "Day 1: Morning Exercises" -#~ msgstr "روز اول: تمرین‌های صبح" - -#~ msgid "In these exercises, we will explore two parts of Rust:" -#~ msgstr "در این تمرین‌ها، دو بخش از راست را بررسی خواهیم کرد:" - -#~ msgid "Implicit conversions between types." -#~ msgstr "تبدیل‌های ضمنی بین انواع" - -#~ msgid "Arrays and `for` loops." -#~ msgstr "آرایه‌ها و حلقه‌های `for`" - -#~ msgid "A few things to consider while solving the exercises:" -#~ msgstr "چند نکته را هنگام حل تمرین‌ها درنظر بگیرید:" - -#~ msgid "" -#~ "Use a local Rust installation, if possible. This way you can get auto-" -#~ "completion in your editor. See the page about [Using Cargo](../../cargo." -#~ "md) for details on installing Rust." -#~ msgstr "" -#~ "در صورت امکان، از نصب محلی راست استفاده کنید. از این طریق می‌توانید از " -#~ "تکمیل خودکار در ویرایشگر خود استفاده کنید. برای جزئیات بیشتر در مورد نصب " -#~ "راست، صفحه مربوط به [استفاده از کارگو](../../cargo.md) را ببینید." - -#~ msgid "Alternatively, use the Rust Playground." -#~ msgstr "در غیر این صورت از `Rust Playground` استفاده کنید." - -#~ msgid "" -#~ "The code snippets are not editable on purpose: the inline code snippets " -#~ "lose their state if you navigate away from the page." -#~ msgstr "" -#~ "قطعه کدها به صورت عمدی قابل ویرایش نیستند: قطعه کدهای درون‌خطی اگر از صفحه " -#~ "خارج شوید، به حالت پیش‌فرض بازنشانی می‌شوند و تغییرات شما درنظر گرفته " -#~ "نمی‌شود." - -#~ msgid "" -#~ "Rust will not automatically apply _implicit conversions_ between types " -#~ "([unlike C++](https://en.cppreference.com/w/cpp/language/" -#~ "implicit_conversion)). You can see this in a program like this:" -#~ msgstr "" -#~ "راست به طور خودکار تبدیل‌های صریح بین انواع را اعمال نمی‌کند ([برخلاف زبان " -#~ "`C++`](https://en.cppreference.com/w/cpp/language/" -#~ "implicit_conversion)).به عنوان مثال میتوانید این را در یک برنامه ببینید:" - -#~ msgid "" -#~ "The Rust integer types all implement the [`From`](https://doc.rust-" -#~ "lang.org/std/convert/trait.From.html) and [`Into`](https://doc.rust-" -#~ "lang.org/std/convert/trait.Into.html) traits to let us convert between " -#~ "them. The `From` trait has a single `from()` method and similarly, the " -#~ "`Into` trait has a single `into()` method. Implementing these traits " -#~ "is how a type expresses that it can be converted into another type." -#~ msgstr "" -#~ "همه انواع عدد صحیح راست، تریت‌های (Trait) [`Into`]" -#~ "(https://doc.rust-lang.org/std/convert/trait.Into.html) و [`From`](https://doc.rust-lang.org/std/convert/trait." -#~ "From.html) را پیاده‌سازی می‌کنند تا به ما امکان تبدیل بین انواع عددی صحیح " -#~ "را بدهند. با پیاده سازی ویژگی `From` همه انواع به " -#~ "صورت مشترک یک متد `from()` را دارند. با پیاده‌سازی " -#~ "تریت `Into` همه انواع یک متد مشترک به اسم `into()` را دارند. پیاده‌سازی این تریت‌ها راهی است که یک نوع " -#~ "بیان می‌کند که می‌تواند به نوع دیگری تبدیل شود." - -#~ msgid "" -#~ "The standard library has an implementation of `From for i16`, which " -#~ "means that we can convert a variable `x` of type `i8` to an `i16` by " -#~ "calling `i16::from(x)`. Or, simpler, with `x.into()`, because `From " -#~ "for i16` implementation automatically create an implementation of " -#~ "`Into for i8`." -#~ msgstr "" -#~ "کتابخانه استاندارد یک پیاده‌سازی `From for i16` " -#~ "دارد `i16` دارد، به این معنی که می‌توانیم یک متغیر " -#~ "`x` از نوع `i8` را با فراخوانی `i16::from(x)` به یک " -#~ "`i16` تبدیل کنیم. یا به شیوه ساده‌تر، با `x.into()` ، زیرا پیاده‌سازی `From` برای نوع `i16` به طور خودکار پیاده‌سازی`Into` برای نوع `i8` را ایجاد می‌کند." - -#~ msgid "" -#~ "The same applies for your own `From` implementations for your own types, " -#~ "so it is sufficient to only implement `From` to get a respective `Into` " -#~ "implementation automatically." -#~ msgstr "" -#~ "همین امر برای پیاده‌سازی‌های `From` خودتان برای انواع " -#~ "خودتان نیز صدق می‌کند، بنابراین کافیست فقط `From` را " -#~ "پیاده‌سازی کنید تا به طور خودکار پیاده‌سازی `Into` " -#~ "مربوطه را دریافت کنید." - -#~ msgid "Execute the above program and look at the compiler error." -#~ msgstr "برنامه فوق را اجرا و به خطای کامپایلر نگاه کنید." - -#~ msgid "Update the code above to use `into()` to do the conversion." -#~ msgstr "" -#~ "کد بالا را به گونه‌ای به‌روزرسانی کنید که از `into()` " -#~ "برای انجام تبدیل استفاده شود." - -#~ msgid "" -#~ "Change the types of `x` and `y` to other things (such as `f32`, `bool`, " -#~ "`i128`) to see which types you can convert to which other types. Try " -#~ "converting small types to big types and the other way around. Check the " -#~ "[standard library documentation](https://doc.rust-lang.org/std/convert/" -#~ "trait.From.html) to see if `From` is implemented for the pairs you " -#~ "check." -#~ msgstr "" -#~ "نوع داده `x` و `y` را به چیزهای دیگری (مانند `f32`, `bool`, `i128`) " -#~ "تغییر دهید تا ببینید کدام انواع را می‌توانید به کدام انواع دیگر تبدیل " -#~ "کنید. سعی کنید انواع کوچک را به انواع بزرگ تبدیل کنید و برعکس. [مستندات " -#~ "کتابخانه استاندارد](https://doc.rust-lang.org/std/convert/trait.From." -#~ "html) را بررسی کنید تا ببینید آیا `From` برای " -#~ "تبدیل انواع‌ایی که بررسی می‌کنید پیاده‌سازی شده است یا نه." - -#~ msgid "Arrays and `for` Loops" -#~ msgstr "آرایه‌ها و حلقه‌های `for`" - -#~ msgid "We saw that an array can be declared like this:" -#~ msgstr "دیدیم که یک آرایه را می‌توان به صورت زیر تعریف کرد: " - -#~ msgid "" -#~ "You can print such an array by asking for its debug representation with " -#~ "`{:?}`:" -#~ msgstr "" -#~ "می‌توانید چنین آرایه‌ای را با درخواست نمایش اشکال‌زدایی آن با `{:?}` چاپ کنید:" - -#~ msgid "" -#~ "Rust lets you iterate over things like arrays and ranges using the `for` " -#~ "keyword:" -#~ msgstr "" -#~ "راست به شما این امکان را می‌دهد تا با استفاده از کلمه کلیدی `for` بر روی " -#~ "چیزهایی مانند آرایه‌ها و رنج‌ها پیمایش کنید:" - -#~ msgid "Bonus Question" -#~ msgstr "سوال جایزه‌دار" - -#~ msgid "" -#~ "Could you use `&[i32]` slices instead of hard-coded 3 × 3 matrices for " -#~ "your argument and return types? Something like `&[&[i32]]` for a two-" -#~ "dimensional slice-of-slices. Why or why not?" -#~ msgstr "" -#~ "آیا می‌توانید به جای ماتریس‌های 3 × 3 هاردکد شده از برش‌های `&[i32]` برای آرگومان و انواع برگشتی تابع خود استفاده " -#~ "کنید؟ چیزی شبیه `&[&[i32]]` برای برش-از-برش دو بعدی. " -#~ "آیا امکان پذیر هست؟ چرا اره و چرا نه؟" - -#~ msgid "" -#~ "See the [`ndarray` crate](https://docs.rs/ndarray/) for a production " -#~ "quality implementation." -#~ msgstr "" -#~ "برای دیدن یک پیاده‌سازی با کیفیت پروداکشن به جعبه [`ndarray`](https://docs.rs/ndarray/) سر بزنید." - -#~ msgid "" -#~ "The solution and the answer to the bonus section are available in the " -#~ "[Solution](solutions-morning.md#arrays-and-for-loops) section." -#~ msgstr "" -#~ "راه‌حل‌ها و پاسخ به بخش جایزه در بخش جواب‌ها](solutions-morning.md#arrays-" -#~ "and-for-loops) موجود است." - -#~ msgid "" -#~ "The use of the reference `&array` within `for n in &array` is a subtle " -#~ "preview of issues of ownership that will come later in the afternoon." -#~ msgstr "" -#~ "استفاده از ارجاع `&array` در بخش `for " -#~ "n in &array` پیش‌نمایشی کوچکی از مسئله مالکیت است در قسمت عصر که " -#~ "بعداً به ان خواهیم پرداخت." - -#~ msgid "Without the `&`..." -#~ msgstr "بدون استفاده از `&` ..." - -#~ msgid "" -#~ "The loop would have been one that consumes the array. This is a change " -#~ "[introduced in the 2021 Edition](https://doc.rust-lang.org/edition-guide/" -#~ "rust-2021/IntoIterator-for-arrays.html)." -#~ msgstr "" -#~ "حلقه به گونه‌ای می‌بود که آرایه را مصرف می‌کند. این تغییری [در ویرایش سال " -#~ "۲۰۲۱ معرفی شده است.](https://doc.rust-lang.org/edition-guide/rust-2021/" -#~ "IntoIterator-for-arrays.html)" - -#~ msgid "" -#~ "An implicit array copy would have occurred. Since `i32` is a copy type, " -#~ "then `[i32; 3]` is also a copy type." -#~ msgstr "" -#~ "یک کپی آرایه ضمنی رخ می‌داد. از آنجایی که `i32` یک نوع کپی است، پس `[i32; 3]` نیز یک نوع کپی است." - -#~ msgid "" -#~ "As we have seen, `if` is an expression in Rust. It is used to " -#~ "conditionally evaluate one of two blocks, but the blocks can have a value " -#~ "which then becomes the value of the `if` expression. Other control flow " -#~ "expressions work similarly in Rust." -#~ msgstr "" -#~ "همانطور که دیدیم، `if` در Rust یک عبارت است. عبارت `if` برای آن استفاده " -#~ "می‌شود که یکی از ۲ بلوک شرطی را در راست ایجاد کند. توجه داشته باشید که در " -#~ "راست این بلاک های `if` میتوانند یک مقدار را برگرداند و در اصطلاح یک " -#~ "مقدار داشته باشند. بقیه عبارات کنترل جریان نیز مشابه این کار میکنند." - -#~ msgid "" -#~ "The same rule is used for functions: the value of the function body is " -#~ "the return value:" -#~ msgstr "" -#~ "قانون مشابه‌ای برای توابع نیز صدق می‌کند: آخرین مقدار در بلاک تابع مقدار " -#~ "برگشتی است: " - -#~ msgid "" -#~ "The point of this slide is to show that blocks have a type and value in " -#~ "Rust. " -#~ msgstr "" -#~ "هدف از این اسلاید نشان دادن این است که بلوک ها در Rust دارای نوع و مقدار " -#~ "هستند. " - -#~ msgid "" -#~ "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) is " -#~ "closely related to the [`while let` loop](while-let-expressions.md). It " -#~ "will automatically call `into_iter()` on the expression and then iterate " -#~ "over it:" -#~ msgstr "" -#~ "[حلقه `for`](https://doc.rust-lang.org/std/keyword.for.html) به طور " -#~ "نزدیکی به حلقه [حلقه `while let` ](while-let-expressions.md) مرتبط است. " -#~ "حلقه `for` به طور خودکار `into_iter()` را روی " -#~ "عبارت فراخوانی می‌کند و سپس روی آن پیشمایش انجام می‌دهد:" - -#~ msgid "You can use `break` and `continue` here as usual." -#~ msgstr "" -#~ "مثل بقیه زبان‌ها می‌توانید از `break` و `continue` به صورت عادی استفاده " -#~ "کنید." - -#~ msgid "Index iteration is not a special syntax in Rust for just that case." -#~ msgstr "پیشمایش اندیس در زبان راست دارای سینتکس خاصی نمی‌باشد." - -#~ msgid "`(0..10)` is a range that implements an `Iterator` trait. " -#~ msgstr "" -#~ "(0..10) یک محدوده است که " -#~ "ویژگی `Iterator` را پیاده‌سازی می‌کند." - -#~ msgid "" -#~ "`step_by` is a method that returns another `Iterator` that skips every " -#~ "other element. " -#~ msgstr "" -#~ "متد `step_by`, متدی است که یک `Iterator` دیگر با قابلیت در نظر نگرفتن " -#~ "بقیه عناصر را برمی‌گرداند." - -#~ msgid "" -#~ "Modify the elements in the vector and explain the compiler errors. Change " -#~ "vector `v` to be mutable and the for loop to `for x in v.iter_mut()`." -#~ msgstr "" -#~ "عناصر را در بردار تغییر دهید و خطاهای کامپایلر را توضیح دهید. بردار v را " -#~ "قابل تغییر کنید (با اضافه کردن `mut`) و حلقه `for` را به `for x in v.iter_mut()` تغییر دهید." - -#~ msgid "`loop` expressions" -#~ msgstr "عبارات `loop`" - -#~ msgid "" -#~ "Finally, there is a [`loop` keyword](https://doc.rust-lang.org/reference/" -#~ "expressions/loop-expr.html#infinite-loops) which creates an endless loop." -#~ msgstr "" -#~ "در نهایت، [کلمه کلیدی `loop`](https://doc.rust-lang.org/reference/" -#~ "expressions/loop-expr.html#infinite-loops) وجود دارد که یک حلقه بی‌پایان " -#~ "ایجاد می‌کند." - -#~ msgid "Here you must either `break` or `return` to stop the loop:" -#~ msgstr "" -#~ "اینجا باید از `break` یا `return` برای توقف حلقه و خروج از آن استفاده " -#~ "کنید:" - -#~ msgid "Break the `loop` with a value (e.g. `break 8`) and print it out." -#~ msgstr "" -#~ "حلقه `loop` را با یک مقدار متوقف کنید (به عنوان مثال `break " -#~ "8` ) و آن را چاپ کنید." - -#~ msgid "" -#~ "Due to type inference the `i32` is optional. We will gradually show the " -#~ "types less and less as the course progresses." -#~ msgstr "" -#~ "به دلیل تعیین نوع ضمنی گذاشتن `i32` اختیاریست. با جلو رفتن در این دوره " -#~ "کمتر و کمتر آن را نشان خواهیم داد." - -#~ 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 "" -#~ "کد زیر به کامپایلر می‌گوید که بدون اینکه کد به صراحت نوع داده را مشخص کند، " -#~ "در یک کانتینر عمومی (generic container) خاص کپی کند، با استفاده از _ به " -#~ "عنوان یک جایگزین برای اعلام نوع داده: " - -#~ msgid "" -#~ "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator." -#~ "html#method.collect) relies on [`FromIterator`](https://doc.rust-lang.org/" -#~ "std/iter/trait.FromIterator.html), which [`HashSet`](https://doc.rust-" -#~ "lang.org/std/collections/struct.HashSet.html#impl-FromIterator%3CT%3E-for-" -#~ "HashSet%3CT,+S%3E) implements." -#~ msgstr "" -#~ "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator." -#~ "html#method.collect) به [`FromIterator`](https://doc.rust-lang.org/std/" -#~ "iter/trait.FromIterator.html) متکی است که [`HashSet`](https://doc.rust-" -#~ "lang.org/std/collections/struct.HashSet.html#impl-FromIterator%3CT%3E-for-" -#~ "HashSet%3CT,+S%3E) آن را پیاده‌سازی می‌کند." - -#~ msgid "Static and Constant Variables" -#~ msgstr "متغیر‌های ایستا و ثابت" - -#~ msgid "" -#~ "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 "" -#~ "کد زیر نشان می دهد که چرا کامپایلر نمی تواند به سادگی از مکان های حافظه " -#~ "که قبلا برای یک متغییر در نظر گرفته است به صورت مجدد وقتی که یک متغییر " -#~ "غیر قابل تغییر داریم استفاده کند. حتی اگر چه نوع داده تغییر نکند." - -#~ msgid "" -#~ "This page offers an enum type `CoinFlip` with two variants `Heads` and " -#~ "`Tails`. You might note the namespace when using variants." -#~ msgstr "" -#~ "در این صفحه نوع`Enum`به اسم `CoinFlip` که دارای `Heads` و `Tails` می‌باشد. " -#~ "هنگام استفاده از `Enum`ها، به این اینگونه نام‌ها توجه کنید." - -#~ msgid "In both, associated functions are defined within an `impl` block." -#~ msgstr "در هر دو، توابع مورد نیازشون در داخل یک بلاک `impl` تعریف می‌شوند." - -#~ msgid "" -#~ "You can define richer enums where the variants carry data. You can then " -#~ "use the `match` statement to extract the data from each variant:" -#~ msgstr "" -#~ "می توانید شمارش های غنی تری را تعریف کنید که در آن انواع مختلف داده " -#~ "باشند. سپس می‌توانید از دستور `match` برای استخراج داده‌ها از هر فیلد " -#~ "استفاده کنید:" - -#~ msgid "" -#~ "The expression is matched against the patterns from top to bottom. There " -#~ "is no fall-through like in C or C++." -#~ msgstr "" -#~ "بر خلاف زبان‌های برخلاف C یا `C++` طبیق الگو به صورت " -#~ "از بالا به پایین نمی‌باشد." - -#~ msgid "" -#~ "The match expression has a value. The value is the last expression in the " -#~ "match arm which was executed." -#~ msgstr "" -#~ "عبارت `match` دارای یک مقدار بازگشتی است. این مقدار آخرین عبارت در بازوی " -#~ "`match` ای است که اجرا شده است." - -#~ msgid "" -#~ "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. " -#~ msgstr "" -#~ "از بالا شروع می‌کنیم و به دنبال الگویی هستیم که با مقدار مطابقت داشته " -#~ "باشد، سپس کد پس از `=>` را اجرا می‌کنیم. بعد از اینکه " -#~ "توی match اولین طبیق الگو انجام شد جستجو متوقف میشود." - -#~ msgid "`match` inspects a hidden discriminant field in the `enum`." -#~ msgstr "" -#~ "دستور `match` یک فیلد تشخیصی پنهان (hidden discriminant field) در `enum` " -#~ "را بررسی می کند." - -#~ msgid "" -#~ "It is possible to retrieve the discriminant by calling `std::mem::" -#~ "discriminant()`" -#~ msgstr "" -#~ "می توان با فراخوانی `std::mem::discriminant()` فیلد " -#~ "تشخیصی پنهان را دریافت کرد." - -#~ msgid "" -#~ "This is useful, for example, if implementing `PartialEq` for structs " -#~ "where comparing field values doesn't affect equality." -#~ msgstr "" -#~ "بهتره بدانیم که اگر `PartialEq` را برای ساختارهایی پیاده سازی کنیم. " -#~ "قابلیت `PartialEq` بر برابری تأثیر نمی‌گذارد." - -#~ msgid "" -#~ "`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." -#~ msgstr "" -#~ "`WebEvent::Click { ... }` دقیقاً مانند `WebEvent::Click(Click)` با `struct Click " -#~ "{ ... }` در سطح بالا نیست.برای مثال, نسخه درون‌خطی نمی‌تواند ویژگی‌ها " -#~ "را پیاده‌سازی کند." - -#~ msgid "" -#~ "Rust enums are packed tightly, taking constraints due to alignment into " -#~ "account:" -#~ msgstr "" -#~ "`enum`ها در Rust به صورت فشرده بسته بندی شده اند، با در نظر گرفتن محدودیت " -#~ "های ناشی از هم ترازی:" - -#~ msgid "" -#~ "Internally Rust is using a field (discriminant) to keep track of the enum " -#~ "variant." -#~ msgstr "" -#~ "زبان Rust, به صورت داخلی از یک فیلد (discriminant) برای رهگیری نوع " -#~ "فیلدهای `enum` استفاده می کند." - -#~ msgid "Try out other types such as" -#~ msgstr "سایر انواع‌داده را امتحان کنید، مانند:" - -#~ msgid "`dbg_size!(bool)`: size 1 bytes, align: 1 bytes," -#~ msgstr "" -#~ "dbg_size!(bool): اندازه توی " -#~ "حافظه 1 بایت، فضای مورد نیاز برای align نیز 1 بایت است," - -#~ msgid "" -#~ "`dbg_size!(Option)`: size 1 bytes, align: 1 bytes (niche " -#~ "optimization, see below)," -#~ msgstr "" -#~ "dbg_size!(Option): " -#~ "اندازه توی حافظه 1 بایت، ، فضای مورد نیاز برای align نیز 1 بایت است " -#~ "(بهینه‌سازی خاص، در زیر ببینید)" - -#~ msgid "" -#~ "`dbg_size!(&i32)`: size 8 bytes, align: 8 bytes (on a 64-bit machine)," -#~ msgstr "" -#~ "dbg_size!(&i32): اندازه توی " -#~ "حافظه ۸ بایت، ، فضای مورد نیاز برای align نیز ۸ بایت است (روی ماشین ۶۴ " -#~ "بیتی)" - -#~ msgid "" -#~ "`dbg_size!(Option<&i32>)`: size 8 bytes, align: 8 bytes (null pointer " -#~ "optimization, see below)." -#~ msgstr "" -#~ "dbg_size!(Option<&i32>): " -#~ "اندازه توی حافظه ۸ بایت، ، فضای مورد نیاز برای align نیز ۸ بایت است " -#~ "(بهینه‌سازی اشاره‌گر NULL را در زیر ببینید)" - -#~ msgid "" -#~ "Niche optimization: Rust will merge unused bit patterns for the enum " -#~ "discriminant." -#~ msgstr "" -#~ "بهینه‌سازی خاص: Rust الگوهای بیتی استفاده نشده را برای discriminant نوع " -#~ "`Enum` ادغام می‌کند." - -#~ msgid "" -#~ "More complex example if you want to discuss what happens when we chain " -#~ "more than 256 `Option`s together." -#~ msgstr "" -#~ "مثال پیچیده‌تر اگر می‌خواهید در مورد اتفاقی که می‌افتد زمانی که بیش از ۲۶۵ " -#~ "عدد `Option` را به صورت تو در تو صدا بزنیم بحث کنید." - -#~ msgid "" -#~ "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, execute a block which is " -#~ "required to abort normal control flow (with `panic`/`return`/`break`/" -#~ "`continue`):" -#~ msgstr "" -#~ "از نسخه 1.65، یک کلیدواژه مشابه به اسم [`let-else`](https://doc.rust-" -#~ "lang.org/rust-by-example/flow_control/let_else.html) اجازه می‌دهد تا یک " -#~ "انتساب به صورت destructuring انجام شود، یا اگر شکست خورد، یک بلوک را اجرا " -#~ "کند که برای خاتمه دادن به جریان کنترل عادی (با panic/return/break/" -#~ "continue) ضروری است:" - -#~ msgid "" -#~ "The [`match` keyword](https://doc.rust-lang.org/reference/expressions/" -#~ "match-expr.html) is used to match a value against one or more patterns. " -#~ "In that sense, it works like a series of `if let` expressions:" -#~ msgstr "" -#~ "[کلمه‌کلیدی `match`](https://doc.rust-lang.org/reference/expressions/match-" -#~ "expr.html) برای مطابقت یک مقدار در برابر یک یا چند الگو استفاده می‌شود. از " -#~ "این نظر، مانند یک سری عبارات `if let` عمل می‌کند:" - -#~ msgid "Save the match expression to a variable and print it out." -#~ msgstr "" -#~ "مقادر بازگشتی از دستور `match` را در متغییری ذخیره کنید و آن را چاپ کنید." - -#~ msgid "Remove `.as_deref()` and explain the error." -#~ msgstr "" -#~ ".as_deref() را حذف کنید و " -#~ "خطا را توضیح دهید." - -#~ msgid "" -#~ "`std::env::args().next()` returns an `Option`, but we cannot " -#~ "match against `String`." -#~ msgstr "" -#~ "std::env::args().next() یک " -#~ "`Option` را برمی‌گرداند،چرا نمی توانیم به " -#~ "عنوان `String` تطبیق الگو کنیم؟" - -#~ msgid "" -#~ "`as_deref()` transforms an `Option` to `Option<&T::Target>`. In our " -#~ "case, this turns `Option` into `Option<&str>`." -#~ msgstr "" -#~ "as_deref() یک `Option` را به `Option<&T::Target>` تبدیل می‌کند. در مورد ما، این `Option` " -#~ "را به `Option<&str>` تبدیل می‌کند." - -#~ msgid "" -#~ "We can now use pattern matching to match against the `&str` inside " -#~ "`Option`." -#~ msgstr "" -#~ "اکنون می‌توانیم از تطبیق الگو برای مطابقت با `&str` " -#~ "داخل `Option` استفاده کنیم." - -#~ msgid "The `_` pattern is a wildcard pattern which matches any value." -#~ msgstr "" -#~ "الگوی _ یک الگوی wildcard (هر حالتی) است که با هر مقداری مطابقت دارد." - -#~ msgid "" -#~ "It can be useful to show how binding works, by for instance replacing a " -#~ "wildcard character with a variable, or removing the quotes around `q`." -#~ msgstr "" -#~ "می‌توان با جایگزینی یک کاراکتر`_` با یک متغیر، یا حذف نقل قول ها در اطراف " -#~ "`q`، به نمایش نحوه کارکرد انتساب کمک کرد." - -#~ msgid "You can demonstrate matching on a reference." -#~ msgstr "می‌توانید تطبیق الگو را با یک ارجاع را نشان دهید." - -#~ msgid "" -#~ "This might be a good time to bring up the concept of irrefutable " -#~ "patterns, as the term can show up in error messages." -#~ msgstr "" -#~ "این ممکن است زمان خوبی برای مطرح کردن مفهوم الگوهای غیرقابل انکار " -#~ "(irrefutable patterns) باشد، زیرا این اصطلاح می تواند در پیام های خطا " -#~ "ظاهر شود." - -#~ msgid "You can also destructure `structs`:" -#~ msgstr "همچنین می‌توانید `structs` را destructure کنید:" - -#~ msgid "" -#~ "Destructuring of slices of unknown length also works with patterns of " -#~ "fixed length." -#~ msgstr "" -#~ "برای destructure کردن برش هایی با طول ناشناخته نیز با الگوهای طول ثابت " -#~ "کار می کند." - -#~ msgid "" -#~ "When matching, you can add a _guard_ to a pattern. This is an arbitrary " -#~ "Boolean expression which will be executed if the pattern matches:" -#~ msgstr "" -#~ "هنگام تطابق، می توانید یک _guard_ به یک الگو اضافه کنید. این یک عبارت " -#~ "بولین دلخواه است که در صورت مطابقت الگو اجرا می شود." - -#~ msgid "" -#~ "You can use the variables defined in the pattern in your if expression." -#~ msgstr "" -#~ "می توانید از متغیرهای تعریف شده در الگو در عبارت `if` خود استفاده کنید." - -#~ msgid "Day 1: Afternoon Exercises" -#~ msgstr "روز ۱: تمرین‌های عصر" - -#~ msgid "We will look at two things:" -#~ msgstr "ما روی ۲ تا چیز نگاهی می‌اندازیم:" - -#~ msgid "The Luhn algorithm," -#~ msgstr "الگوریتم Luhn" - -#~ msgid "An exercise on pattern matching." -#~ msgstr "تمرینی درباره تطبیق الگو" - -#~ msgid "" -#~ "Try to solve the problem the \"simple\" way first, using `for` loops and " -#~ "integers. Then, revisit the solution and try to implement it with " -#~ "iterators." -#~ msgstr "" -#~ "ابتدا سعی کنید مشکل را به روش «ساده» با استفاده از حلقه‌های `for` و اعداد " -#~ "صحیح حل کنید. سپس، سعی کنید آن را با استفاده از `iterator`ها پیاده‌سازی " -#~ "کنید." - -#~ msgid "" -#~ "Memory management: stack vs heap, manual memory management, scope-based " -#~ "memory management, and garbage collection." -#~ msgstr "" -#~ "مدیریت حافظه: پشته (Stack) در مقابل انباشت (Heap)، مدیریت دستی حافظه، " -#~ "مدیریت حافظه مبتنی بر اسکوپ و جمع آوری زباله. " - -#~ msgid "" -#~ "Ownership: move semantics, copying and cloning, borrowing, and lifetimes." -#~ msgstr "" -#~ "Ownership: حرکت semantics،copying و cloning, borrowing و lifetimes." - -#~ msgid "Structs and methods." -#~ msgstr "ساختارها و متدها." - -#~ msgid "" -#~ "The Standard Library: `String`, `Option` and `Result`, `Vec`, `HashMap`, " -#~ "`Rc` and `Arc`." -#~ msgstr "" -#~ "کتابخانه استاندارد: `String`, `Option` و `Result`, `Vec`, `HashMap`, " -#~ "`Rc` و `Arc`." - -#~ msgid "Modules: visibility, paths, and filesystem hierarchy." -#~ msgstr "ماژول‌ها: قابل دیدن بودن, مسیرها و مدیریت سلسله مراتبی فایل‌سیستم" - -#~ msgid "First, let's refresh how memory management works." -#~ msgstr "" -#~ "قبل از هر چیزی, آنچه درباره مدیریت حافظه میدونیم رو بروز رسانی کنیم." - -#~ msgid "The Stack vs The Heap" -#~ msgstr "پشته (Stack) در مقابل انباشت (Heap)" - -#~ msgid "Stack and Heap Example" -#~ msgstr "یک مثال از پشته و انباشت" - -#~ msgid "You allocate and deallocate heap memory yourself." -#~ msgstr "شما خودتان حافظه انباشت را تخصیص داده و تخصیص‌زدایی می‌کنید." - -#~ msgid "" -#~ "If not done with care, this can lead to crashes, bugs, security " -#~ "vulnerabilities, and memory leaks." -#~ msgstr "" -#~ "اگر با دقت انجام نشود، این می تواند منجر به خرابی، اشکال، آسیب‌پذیری‌های " -#~ "امنیتی و نشتی حافظه شود." - -#~ msgid "C Example" -#~ msgstr "مثالی در زبان C" - -#~ msgid "You must call `free` on every pointer you allocate with `malloc`:" -#~ msgstr "" -#~ "باید `free` را برای هر اشاره‌گری که با `malloc` تخصیص می‌دهید، فراخوانی " -#~ "کنید:" - -#~ msgid "" -#~ "Memory is leaked if the function returns early between `malloc` and " -#~ "`free`: the pointer is lost and we cannot deallocate the memory. Worse, " -#~ "freeing the pointer twice, or accessing a freed pointer can lead to " -#~ "exploitable security vulnerabilities." -#~ msgstr "" -#~ "اگر تابع بین `malloc` و `free` مقداری را بازگرداند و از تابع خارج شویم، " -#~ "حافظه نشت می‌کند: اشاره گر گم می‌شود و نمی‌توانیم حافظه را تخصیص‌زدایی کنیم. " -#~ "بدتر از آن، آزاد کردن مجدد اشاره گر یا دسترسی به یک اشاره گر که قبلا آزاد " -#~ "شده می‌تواند منجر به آسیب‌پذیری‌های امنیتی قابل سوءاستفاده شود." - -#~ msgid "" -#~ "Constructors and destructors let you hook into the lifetime of an object." -#~ msgstr "" -#~ "سازنده‌ها و مخرب‌ها به شما امکان می‌دهند تا به طول‌عمر یک شیء متصل (hook) " -#~ "شوید." - -#~ msgid "" -#~ "By wrapping a pointer in an object, you can free memory when the object " -#~ "is destroyed. The compiler guarantees that this happens, even if an " -#~ "exception is raised." -#~ msgstr "" -#~ "با پیچیدن (wrapping) یک اشاره گر در یک شیء، می‌توانید هنگام تخریب شیء، " -#~ "حافظه را آزاد کنید. کامپایلر تضمین می‌کند که این اتفاق می‌افتد، حتی اگر یک " -#~ "exception ایجاد شود." - -#~ msgid "" -#~ "This is often called _resource acquisition is initialization_ (RAII) and " -#~ "gives you smart pointers." -#~ msgstr "" -#~ "این اغلب به عنوان _resource acquisition is initialization_ (RAII) نامیده " -#~ "می‌شود و به شما اشاره گرهای هوشمند می‌دهد." - -#~ msgid "" -#~ "The `std::unique_ptr` object is allocated on the stack, and points to " -#~ "memory allocated on the heap." -#~ msgstr "" -#~ "ابجکت `std::unique_ptr` در پشته تخصیص داده می‌شود و " -#~ "به حافظه‌ای که روی انباشت تخصیص داده شده اشاره می‌کند." - -#~ msgid "" -#~ "At the end of `say_hello`, the `std::unique_ptr` destructor will run." -#~ msgstr "" -#~ "در پایان `say_hello`، تابع مخرب `std::unique_ptr` " -#~ "اجرا می‌شود." - -#~ msgid "The destructor frees the `Person` object it points to." -#~ msgstr "مخرب شیء `Person` را که به آن اشاره می‌کند، آزاد می‌کند." - -#~ msgid "" -#~ "Special move constructors are used when passing ownership to a function:" -#~ msgstr "" -#~ "هنگام انتقال مالکیت به یک تابع از سازنده‌های مخصوص انتقال استفاده می‌شود:" - -#~ msgid "" -#~ "An alternative to manual and scope-based memory management is automatic " -#~ "memory management:" -#~ msgstr "" -#~ "یک جایگزین برای مدیریت حافظه دستی و مبتنی بر اسکوپ، مدیریت حافظه خودکار " -#~ "است:" - -#~ msgid "The programmer never allocates or deallocates memory explicitly." -#~ msgstr "برنامه نویس هیچ وقت به صورت صریح حافظه را تخصیص یا آزاد نمیکند." - -#~ msgid "" -#~ "A garbage collector finds unused memory and deallocates it for the " -#~ "programmer." -#~ msgstr "" -#~ "یک جمع‌آوری زباله حافظه استفاده نشده را پیدا می‌کند و آن را برای برنامه‌نویس " -#~ "تخصیص‌زدایی (آزاد) می‌کند." - -#~ msgid "Java Example" -#~ msgstr "مثالی در Java" - -#~ msgid "The `person` object is not deallocated after `sayHello` returns:" -#~ msgstr "شیء `person` پس از بازگشت `sayHello` تخصیص‌زدایی نمی‌شود:" - -#~ msgid "Memory Management in Rust" -#~ msgstr "مدیریت حافظه در Rust" - -#~ msgid "Memory management in Rust is a mix:" -#~ msgstr "مدیریت حافظه در Rust ترکیبی از موارد زیر است:" - -#~ msgid "Safe and correct like Java, but without a garbage collector." -#~ msgstr "ایمن و صحیح مانند جاوا، اما بدون جمع‌آوری زباله." - -#~ msgid "Scope-based like C++, but the compiler enforces full adherence." -#~ msgstr "" -#~ "مبتنی بر اسکوپ مانند C++، اما کامپایلر همه موارد را " -#~ "رعایت می‌کند." - -#~ msgid "" -#~ "A Rust user can choose the right abstraction for the situation, some even " -#~ "have no cost at runtime like C." -#~ msgstr "" -#~ "کاربر Rust می‌تواند انتخاب کند که کدام انتزاع برای وضعیت مورد نظر مناسب " -#~ "است، برخی مانند C هزینه‌ای در زمان اجرا ندارند." - -#~ msgid "Rust achieves this by modeling _ownership_ explicitly." -#~ msgstr "زبان Rust این کار را با مدل‌سازی صریح مالکیت انجام می‌دهد." - -#~ msgid "" -#~ "If asked how at this point, you can mention that in Rust this is usually " -#~ "handled by RAII wrapper types such as [Box](https://doc.rust-lang.org/std/" -#~ "boxed/struct.Box.html), [Vec](https://doc.rust-lang.org/std/vec/struct." -#~ "Vec.html), [Rc](https://doc.rust-lang.org/std/rc/struct.Rc.html), or [Arc]" -#~ "(https://doc.rust-lang.org/std/sync/struct.Arc.html). These encapsulate " -#~ "ownership and memory allocation via various means, and prevent the " -#~ "potential errors in C." -#~ msgstr "" -#~ "اگر توی این مرحله از شما پرسیده شد که چطوری این کار انجام می‌شود, میتوانید " -#~ "به این موضوع که زبان راست معمولاً توسط انواع `wrapper RAII` مانند [`Box`]" -#~ "(https://doc.rust-lang.org/std/boxed/struct.Box.html), [`Vec`](https://" -#~ "doc.rust-lang.org/std/vec/struct.Vec.html), [`Rc`](https://doc.rust-lang." -#~ "org/std/rc/struct.Rc.html), یا [`Arc`](https://doc.rust-lang.org/std/sync/" -#~ "struct.Arc.html) مدیریت را انجام میدهد. این‌ها مالکیت و تخصیص حافظه را از " -#~ "طریق روش‌های مختلف دربرمی‌گیرند و از خطاهای بالقوه در C جلوگیری می‌کنند." - -#~ msgid "" -#~ "You may be asked about destructors here, the [Drop](https://doc.rust-lang." -#~ "org/std/ops/trait.Drop.html) trait is the Rust equivalent." -#~ msgstr "" -#~ "اگر درباره مخرب‌ها (destructors) از شما پرسیدند, مخرب ها معادل پیاده‌سازی " -#~ "[Drop](https://doc.rust-lang.org/std/ops/trait.Drop.html) هستند." - -#~ msgid "A destructor can run here to free up resources." -#~ msgstr "یک مخرب می‌تواند در اینجا اجرا شود تا منابع را آزاد کند." - -#~ msgid "There is always _exactly_ one variable binding which owns a value." -#~ msgstr "همیشه مالکیت یک مقدار را یک متغییر که بهش انتساب میدیم دارد" - -#~ msgid "The heap data from `s1` is reused for `s2`." -#~ msgstr "داده‌های انباشت از `s1` دوباره برای `s2` استفاده می‌شود." - -#~ msgid "" -#~ "When `s1` goes out of scope, nothing happens (it has been moved from)." -#~ msgstr "وقتی از اسکوپ `s1` خارج می‌شویم، هیچ اتفاقی نمی‌افتد." - -#~ msgid "" -#~ "If students ask about `derive`, it is sufficient to say that this is a " -#~ "way to generate code in Rust at compile time. In this case the default " -#~ "implementations of `Copy` and `Clone` traits are generated." -#~ msgstr "" -#~ "اگر دانشجویان در مورد `derive` پرسیدند، کافی است بگوییم که این راهی برای " -#~ "تولید کد در`Rust` در زمان کامپایل است. در این مورد، پیاده‌سازی‌های پیش‌فرض " -#~ "صفت‌های `Copy` و `Clone` تولید می‌شوند." - -#, fuzzy -#~ msgid "Drawing A Simple GUI" -#~ msgstr "یک کتابخانه GUI ساده" - -#, fuzzy -#~ msgid "concurrency:" -#~ msgstr "همزمانی" - -#, fuzzy -#~ msgid "control flow:" -#~ msgstr "کنترل جریان" - -#, fuzzy -#~ msgid "error handling:" -#~ msgstr "مدیریت خطا (Error Handling)" - -#, fuzzy -#~ msgid "garbage collector:" -#~ msgstr "Garbage Collection" - -#, fuzzy -#~ msgid "generics:" -#~ msgstr "Generics" - -#, fuzzy -#~ msgid "integration test:" -#~ msgstr "Integration Tests" - -#, fuzzy -#~ msgid "main function:" -#~ msgstr "فراخوانی متدهای ناامن" - -#, fuzzy -#~ msgid "method:" -#~ msgstr "متدها" - -#, fuzzy -#~ msgid "module:" -#~ msgstr "ماژول‌ها" - -#, fuzzy -#~ msgid "ownership:" -#~ msgstr "مالکیت" - -#, fuzzy -#~ msgid "panic:" -#~ msgstr "Panics" - -#, fuzzy -#~ msgid "receiver:" -#~ msgstr "درایور" - -#, fuzzy -#~ msgid "standard library:" -#~ msgstr "کتابخانه‌های استاندارد" - -#, fuzzy -#~ msgid "struct:" -#~ msgstr "ساختارها" - -#, fuzzy -#~ msgid "thread:" -#~ msgstr "تردها" - -#, fuzzy -#~ msgid "trait:" -#~ msgstr "trait:" - -#, fuzzy -#~ msgid "union:" -#~ msgstr "Unions" - -#, fuzzy -#~ msgid "unit test:" -#~ msgstr "تست‌های واحد (Unit Tests)" - -#, fuzzy -#~ msgid "variable:\\" -#~ msgstr "متغیرها" - -#, fuzzy -#~ msgid "Pattern matching" -#~ msgstr "تطبیق الگو" +#~ "کلاس درس می دهیدما پیشنهاد \ No newline at end of file