ضمیمه الف: کلمات کلیدی
لیست زیر شامل کلمات کلیدی است که برای استفاده فعلی یا آینده توسط زبان Rust رزرو شدهاند. به همین دلیل، نمیتوان از آنها به عنوان شناسه استفاده کرد (مگر به عنوان شناسه خام، همانطور که در بخش “شناسههای خام” توضیح داده خواهد شد). شناسهها نامهایی هستند که برای توابع، متغیرها، پارامترها، فیلدهای ساختار، ماژولها، جعبهها (crates)، ثابتها، ماکروها، مقادیر استاتیک، ویژگیها، انواع، ویژگیها، یا طول عمرها استفاده میشوند.
کلمات کلیدی در حال استفاده
فهرست زیر شامل کلمات کلیدی است که در حال حاضر استفاده میشوند، همراه با توضیح عملکرد آنها:
as
- انجام تبدیل اولیه، مشخص کردن ویژگی خاص حاوی یک آیتم، یا تغییر نام آیتمها در دستوراتuse
async
- بازگرداندن یکFuture
به جای مسدود کردن Thread فعلیawait
- متوقف کردن اجرا تا زمانی که نتیجه یکFuture
آماده شودbreak
- خروج فوری از یک حلقهconst
- تعریف آیتمهای ثابت یا اشارهگرهای خام ثابتcontinue
- ادامه به تکرار بعدی حلقهcrate
- در مسیر ماژول، به ریشه crate اشاره داردdyn
- توزیع داینامیک به یک شیء ویژگیelse
- حالت جایگزین برای سازههای جریان کنترلیif
وif let
enum
- تعریف یک شمارشextern
- لینک کردن یک تابع یا متغیر خارجیfalse
- مقدار بولیfalse
fn
- تعریف یک تابع یا نوع اشارهگر تابعfor
- حلقه بر روی آیتمهای یک iterator، پیادهسازی یک ویژگی، یا مشخص کردن طول عمر سطح بالاترif
- انشعاب بر اساس نتیجه یک عبارت شرطیimpl
- پیادهسازی قابلیتهای ذاتی یا ویژگیin
- بخشی از سینتکس حلقهfor
let
- متصل کردن یک متغیرloop
- حلقه بدون شرطmatch
- تطابق یک مقدار با الگوهاmod
- تعریف یک ماژولmove
- مالکیت متغیرهای گرفتهشده توسط Closure را منتقل میکندmut
- نشان دادن قابلیت تغییر در مراجع، اشارهگرهای خام، یا بایندینگ الگوهاpub
- نشان دادن قابلیت مشاهده عمومی در فیلدهای struct، بلوکهایimpl
، یا ماژولهاref
- بایند کردن با مرجعreturn
- بازگرداندن از تابعSelf
- یک نام مستعار برای نوعی که در حال تعریف یا پیادهسازی آن هستیمself
- موضوع متد یا ماژول فعلیstatic
- متغیر جهانی یا طول عمر طولانی تا زمان اجرای کامل برنامهstruct
- تعریف یک ساختارsuper
- ماژول والد ماژول فعلیtrait
- تعریف یک ویژگیtrue
- مقدار بولیtrue
type
- تعریف یک نام مستعار نوع یا نوع وابستهunion
- تعریف یک union؛ فقط هنگام استفاده در یک اعلان union یک کلمه کلیدی استunsafe
- نشان دادن کد، توابع، ویژگیها یا پیادهسازیهای ناامنuse
- آوردن نمادها به دامنه؛ مشخص کردن برداشت دقیق برای محدودیتهای عمومی و طول عمرwhere
- مشخص کردن بندهایی که یک نوع را محدود میکنندwhile
- حلقه شرطی بر اساس نتیجه یک عبارت
کلمات کلیدی رزرو شده برای استفاده در آینده
کلمات کلیدی زیر هنوز هیچ کاربردی ندارند اما توسط Rust برای استفاده احتمالی در آینده رزرو شدهاند:
abstract
become
box
do
final
gen
macro
override
priv
try
typeof
unsized
virtual
yield
شناسههای خام
شناسههای خام سینتکسی هستند که به شما اجازه میدهند از کلمات کلیدی در جایی که معمولاً مجاز نیستند استفاده کنید. برای استفاده از یک شناسه خام، یک r#
قبل از کلمه کلیدی اضافه کنید.
برای مثال، match
یک کلمه کلیدی است. اگر بخواهید تابع زیر را که از match
به عنوان نام خود استفاده میکند کامپایل کنید:
Filename: src/main.rs
fn match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
شما این خطا را دریافت خواهید کرد:
error: expected identifier, found keyword `match`
--> src/main.rs:4:4
|
4 | fn match(needle: &str, haystack: &str) -> bool {
| ^^^^^ expected identifier, found keyword
این خطا نشان میدهد که نمیتوانید از کلمه کلیدی match
به عنوان شناسه تابع استفاده کنید. برای استفاده از match
به عنوان نام تابع، باید از سینتکس شناسه خام به این شکل استفاده کنید:
#![allow(unused)] fn main() { fn r#match(needle: &str, haystack: &str) -> bool { haystack.contains(needle) } }
Filename: src/main.rs
fn r#match(needle: &str, haystack: &str) -> bool { haystack.contains(needle) } fn main() { assert!(r#match("foo", "foobar")); }
این کد بدون هیچ خطایی کامپایل خواهد شد. به پیشوند r#
روی نام تابع در تعریف آن و همچنین جایی که تابع در main
فراخوانی میشود، توجه کنید.
شناسههای خام (Raw identifiers) به شما این امکان را میدهند که از هر کلمهای که انتخاب میکنید به عنوان شناسه استفاده کنید، حتی اگر آن کلمه بهطور معمول یک کلمه کلیدی رزروشده باشد. این ویژگی آزادی بیشتری برای انتخاب نام شناسهها فراهم میکند و همچنین امکان ادغام با برنامههایی که به زبانی نوشته شدهاند که این کلمات در آن زبان کلمات کلیدی نیستند، را میدهد. علاوه بر این، شناسههای خام به شما اجازه میدهند از کتابخانههایی استفاده کنید که با نسخهای از Rust نوشته شدهاند که با نسخه مورد استفاده شما متفاوت است.
برای مثال، try
در نسخه ۲۰۱۵ کلمه کلیدی نیست، اما در نسخههای ۲۰۱۸، ۲۰۲۱ و ۲۰۲۴ کلمه کلیدی است. اگر به کتابخانهای وابسته باشید که با نسخه ۲۰۱۵ نوشته شده و یک تابع به نام try
دارد، باید از سینتکس شناسه خام، یعنی r#try
، برای فراخوانی آن تابع از کد نسخه ۲۰۱۸ خود استفاده کنید. برای اطلاعات بیشتر در مورد نسخهها به ضمیمه ه مراجعه کنید.