سلام دنیا!

حالا که Rust رو نصب کردی، وقتشه اولین برنامه‌ات رو بنویسی.
وقتی یه زبان جدید یاد می‌گیریم، معمولاً یه برنامه ساده می‌نویسیم که Hello, world! رو روی صفحه نمایش بده. پس ما هم همین کار رو می‌کنیم!

نکته: این کتاب فرض می‌کنه که آشنایی اولیه با خط فرمان (Command Line) داری.
Rust هیچ محدودیتی برای انتخاب ویرایشگر یا ابزار توسعه نداره. اگه ترجیح می‌دی با یه محیط توسعه یکپارچه (IDE) کار کنی، مشکلی نیست.
خیلی از IDEها پشتیبانی از Rust دارن، می‌تونی توی مستنداتشون اطلاعات بیشتری پیدا کنی.
تیم Rust روی بهبود پشتیبانی از IDEها از طریق rust-analyzer کار می‌کنه. برای اطلاعات بیشتر به ضمیمه D مراجعه کن.

ساخت پوشه پروژه

اول باید یه پوشه برای ذخیره کدهای Rust بسازی.
Rust اهمیتی نمی‌ده که پروژه‌هات رو کجا ذخیره می‌کنی، ولی برای نظم بیشتر پیشنهاد می‌کنیم یه پوشه به اسم projects توی دایرکتوری اصلی (home) بسازی و پروژه‌هات رو اونجا نگه داری.

ترمینال رو باز کن و دستورات زیر رو اجرا کن تا پوشه projects و یه پوشه جدید برای پروژه "Hello, world!" ساخته بشه:

برای لینوکس، macOS و PowerShell در ویندوز:

$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world

برای CMD در ویندوز:

> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
> cd hello_world

نوشتن و اجرای برنامه Rust

حالا یه فایل جدید به اسم main.rs بساز. فایل‌های Rust همیشه پسوند .rs دارن.
اگه اسم فایلت از چند کلمه تشکیل شده، بهتره بینشون از آندرلاین _ استفاده کنی، مثل hello_world.rs به جای helloworld.rs.

فایل main.rs رو باز کن و این کد رو توش بنویس:

fn main() {
 println!("Hello, world!");
}

فایل رو ذخیره کن و برگرد به ترمینال توی پوشه ~/projects/hello_world.
اگه از لینوکس یا macOS استفاده می‌کنی، این دستورات رو اجرا کن:

$ rustc main.rs
$ ./main
Hello, world!

اگه از ویندوز استفاده می‌کنی، دستور .\main.exe رو به‌جای ./main اجرا کن:

> rustc main.rs
> .\main.exe
> Hello, world!

اگه خروجی Hello, world! رو دیدی، تبریک می‌گم! تو اولین برنامه Rust خودت رو نوشتی.
حالا رسماً یه برنامه‌نویس Rust شدی! خوش اومدی!

بررسی ساختار برنامه Rust

بیاید برنامه "Hello, world!" رو دقیق‌تر بررسی کنیم. این اولین بخش کده:

fn main() {
}

این خط یه تابع به اسم main رو تعریف می‌کنه. تابع main یه تابع خاصه که همیشه اولین کدی هست که توی هر برنامه اجرایی Rust اجرا می‌شه.
اینجا تابع main هیچ ورودی‌ای نداره و چیزی هم برنمی‌گردونه. اگه قرار بود ورودی داشته باشه، داخل پرانتز () قرار می‌گرفت.

بدنه تابع داخل {} قرار داره. Rust اجبار می‌کنه که تمام توابع باید با کروشه {} نوشته بشن.
یه استاندارد خوب اینه که آکولاد باز { رو همون خطی که تابع رو تعریف کردی بذاری و بینشون یه فاصله قرار بدی.

نکته: اگه دوست داری کدت همیشه مرتب باشه، می‌تونی از rustfmt استفاده کنی.
این ابزار به‌صورت خودکار کدت رو مرتب می‌کنه. Rust این ابزار رو همراه خودش داره، پس روی سیستمت نصبه و می‌تونی ازش استفاده کنی!

بدنه تابع main این خط رو داره:

#![allow(unused)]
fn main() {
println!("Hello, world!");
}

این خط در این برنامه کوچک تمام کارها رو انجام می‌ده: متن رو روی صفحه نمایش چاپ می‌کنه. چهار نکته مهم برای توجه وجود داره.

اولاً، println! یک ماکرو در Rust رو فراخوانی می‌کنه. اگر به جای آن یک تابع فراخوانی می‌شد، باید به صورت println (بدون علامت !) نوشته می‌شد. ما در فصل 20 به طور مفصل‌تری در مورد ماکروهای Rust صحبت خواهیم کرد. برای الآن، فقط باید بدونی که استفاده از ! یعنی شما در حال فراخوانی یک ماکرو هستید، نه یک تابع معمولی، و ماکروها همیشه قوانین مشابه توابع رو دنبال نمی‌کنند.

دوم، شما رشته "Hello, world!" رو می‌بینید. این رشته به عنوان پارامتر به println! داده میشه و چاپ می‌شه.

سوم، ما خط رو با یک سمی‌کالن (;) تمام می‌کنیم، که نشون می‌ده این عبارت تموم شده و عبارت بعدی آماده شروعه. بیشتر خطوط کد Rust با سمی‌کالن تموم می‌شن.

کامپایل کردن و اجرای برنامه مراحل جداگانه‌ای هستند

شما الان یه برنامه جدید اجرا کردید، پس بیاید هر مرحله از این فرایند رو بررسی کنیم.

قبل از اجرای یک برنامه Rust، باید اون رو با استفاده از کامپایلر Rust کامپایل کنید. این کار با وارد کردن دستور rustc و دادن اسم فایل سورس بهش انجام میشه:

$ rustc main.rs

اگر با زبان‌های C یا C++ آشنا هستید، متوجه می‌شید که این شبیه دستور gcc یا clang هست. بعد از کامپایل شدن موفقیت‌آمیز، Rust یه فایل باینری اجرایی تولید می‌کنه.

در لینوکس، macOS و PowerShell در ویندوز، می‌تونید با وارد کردن دستور ls در شل خود، فایل اجرایی رو ببینید:

$ ls
main main.rs

در لینوکس و macOS، دو فایل خواهید دید. در PowerShell ویندوز، همون سه فایلی که در CMD می‌بینید رو خواهید دید. در CMD ویندوز، باید دستور زیر رو وارد کنید:

> dir /B %= گزینه /B فقط اسم فایل‌ها رو نشون می‌ده =%
> main.exe
> main.pdb
> main.rs

این دستور، فایل سورس با پسوند .rs، فایل اجرایی (main.exe در ویندوز، اما main در بقیه پلتفرم‌ها) و در صورت استفاده از ویندوز، فایلی که اطلاعات اشکال‌زدایی رو با پسوند .pdb ذخیره می‌کنه، نشون می‌ده. از اینجا، شما فایل main یا main.exe رو اجرا می‌کنید، مثل این:

$ ./main # یا .\main.exe در ویندوز

اگر main.rs برنامه "Hello, world!" شما باشه، این دستور Hello, world! رو به ترمینال چاپ می‌کنه.

اگر با زبان‌های داینامیک مثل Ruby، Python یا JavaScript آشنا هستید، ممکنه به عادت نکرده باشید که کامپایل و اجرای برنامه رو به صورت مراحل جداگانه انجام بدید. Rust یک زبان کامپایل‌شده به جلو است، به این معنی که شما می‌تونید برنامه‌ای رو کامپایل کنید و فایل اجرایی رو به کسی بدید و اون شخص می‌تونه بدون نصب Rust، اون رو اجرا کنه. اما اگه شما یه فایل .rb، .py یا .js به کسی بدید، اون شخص باید Ruby، Python یا JavaScript رو نصب کرده باشه (به ترتیب). اما در این زبان‌ها، شما فقط به یک دستور نیاز دارید تا برنامه رو کامپایل و اجرا کنید. در زبان‌ها، همه چیز یک معامله است.

فقط با کامپایل کردن با rustc برای برنامه‌های ساده خوبه، اما وقتی پروژه شما بزرگتر شد، می‌خواهید همه گزینه‌ها رو مدیریت کنید و کدتون رو راحت‌تر به اشتراک بذارید. در ادامه، ابزار Cargo رو معرفی خواهیم کرد که به شما کمک می‌کنه برنامه‌های واقعی Rust رو بنویسید.