Tux Thoughts
19 subscribers
9 photos
3 videos
9 links
Download Telegram
Team Channel (English Language )
-> @Andromeda_TS
Forever.
الموتم
الموتم که من از عالم لاهوت به ناسوت سفر کرده
و چون گنج گران گشته نهان
در دل البرز، همان قله ی با نام و نشان جبروتم، الموتم
Either the motherland or death
چالش CTF با Agent
با همه حرفایی تفکراتی که کردم ، بالاخره تصمیم گرفتم حداقل به خاطر علاقه‌ خودمم که شده برم سراغ یادگیری زبان Rust 🦀 .

اما چون اخلاق خودم رو می‌شناسم و می‌دونم احتمال داره وسط راه رهاش کنم، تصمیم گرفتم هر روز هر چی از راست یاد می‌گیرم رو همین‌جا توی چنل بذارم.

این‌طوری هم برای خودم مرور می‌شه و هم یه چالش جدیه که بی‌خیالش نشم و نصفه‌کاره رهاش نکنم!
Tux Thoughts
Photo
بازی Guess (حدس عدد) با زبان راست ! صفحه 23 کتاب زبان برنامه نویسی راست.

use std::io; 


ماژول io که شامل ابزار های رایجی هست که میتونیم برای مدیریت ورودی و خروجی در پروژه استفاده کنیم


fn main() {}


در راست هرچیزی که بشه اجرا کرد باید در تابع اصلی یا تابع main قرار بگیره

println!("Guess the number!");
println!("Please input your guess.");


با استفاده از println! میتونیم یک متن رو چاپ کنیم(ln برای اینه که وقتی چاپ شد بره خط بعدی ; و ! برای اینه که ما داریم از یک macro استفاده میکنیم اگر تابع معمولی بود نمیزاشتیمش)!


let mut guess = String::new();


- در این خط یک متغیر میسازیم به نام guess

- از mut استفاده میکنیم که متغیرمون قابل تغیر باشه (بتونیم مقدار داخلش رو راحت تغیر بدیم یا چیزی توش بریزیم)

- و این متغیر رو از نوع String میسازیم


io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");


- از io::stdin() برای گرفتن ورودی استاندارد از کیبورد استفاده میکنیم

- از read_line استفاده میکنیم تا یک خط کامل رو بخونیم و از (&mut guess) استفاده میکنیم تا متغیر guess قابل تغیر بشه و مقداری که وارد کردیم بره داخلش

- از .expect("Failed to read line"); استفاده میکنیم تا بفهمیم ورودی که داخل متغیر ریختیم با موفقیت ریخته شده یا نه


println!("You guessed: {guess}");


در اخر هم ورودی رو چاپ میکنیم!



Rust Language Challenge 🦀
Tuxify ! t.me/CaptainTux
Tux Thoughts
بازی Guess (حدس عدد) با زبان راست ! صفحه 23 کتاب زبان برنامه نویسی راست. use std::io; ماژول io که شامل ابزار های رایجی هست که میتونیم برای مدیریت ورودی و خروجی در پروژه استفاده کنیم fn main() {} در راست هرچیزی که بشه اجرا کرد باید در تابع اصلی یا تابع…
متغیرها در زبان Rust به صورت پیش‌فرض غیرقابل‌تغییر (Immutable) هستند، اما با استفاده از کلیدواژه mut می‌تونیم یک متغیر قابل‌تغییر (Mutable) تعریف کنیم.

حالا String::new() چیه؟
در واقع همون "" یا یک رشته‌ی خالیه؛ یعنی متغیری از جنس String که هنوز هیچ مقداری (Value) داخلش قرار نگرفته.



🦀 Rust Language Challenge
Tuxify! t.me/CaptainTux
Tux Thoughts
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
متد read_line فقط ورودی کاربر رو توی متغیر قرار نمیده! بلکه یک مقدار از نوع Result هم برمی‌گردونه.


حالا Result چیه؟

در Rust مقدار Result یک Enum (نوع شمارشی) هست.

یعنی مقداری که می‌تونه یکی از دو حالت زیر رو داشته باشه:

حالت Ok : اگه عملیات موفق باشه ، نتیجه Ok(Value) میشه، یعنی با موفقیت ورودی رو دریافت کردیم


حالت Err : اگه مشکلی پیش بیاد ، این حالت Err(Error) رو دریافت میکنیم، یعنی موقع ورودی گرفتن به خطایی خوردیم.

حالا از متد expect استفاده می‌کنیم تا مقدار Result رو بررسی کنیم:

اگر نتیجه Ok باشه، خودِ مقدار رو برمیگردونه.
اما اگه Err باشه، برنامه متوقف میشه و با عرور "Failed to read line" مواجه میشیم.


حالا اگه expect رو نذاریم چی میشه؟

برنامه بدون مشکل کامپایل می‌شه ، اما Rust به ما یک Warning میده!

راست میگه : «تو مقداری داری که ممکن است شامل خطا باشه و حتماً باید تکلیفش رو مشخص کنی»


🦀 Rust Language Challenge
Tuxify! t.me/CaptainTux
This media is not supported in your browser
VIEW IN TELEGRAM