ضمیمه ب: عملگرها و نمادها
این ضمیمه شامل واژهنامهای از سینتکس زبان Rust است، از جمله عملگرها و سایر نمادهایی که به تنهایی یا در زمینه مسیرها، جنریکها، محدودیتهای ویژگی، ماکروها، ویژگیها، نظرات، تاپلها و براکتها ظاهر میشوند.
عملگرها
جدول B-1 عملگرهای موجود در Rust، یک مثال از چگونگی ظاهر شدن عملگر در زمینه، توضیح کوتاه و اینکه آیا آن عملگر قابل اضافهبارگذاری است یا نه را نشان میدهد. اگر یک عملگر قابل اضافهبارگذاری باشد، ویژگی مرتبط برای اضافهبارگذاری آن عملگر ذکر شده است.
جدول B-1: عملگرها
عملگر | مثال | توضیح | قابلیت بارگذاری مجدد (Overload)? | ||||
---|---|---|---|---|---|---|---|
! | ident!(...) , ident!{...} , ident![...] | گسترش ماکرو | |||||
! | !expr | مکمل منطقی یا بیتی | Not | ||||
!= | expr != expr | مقایسه نابرابری | PartialEq | ||||
% | expr % expr | باقیمانده تقسیم | Rem | ||||
%= | var %= expr | باقیمانده تقسیم و اختصاص | RemAssign | ||||
& | &expr , &mut expr | قرضگیری | |||||
& | &type , &mut type , &'a type , &'a mut type | نوع اشارهگر قرضگرفتهشده | |||||
& | expr & expr | AND بیتی | BitAnd | ||||
&= | var &= expr | AND بیتی و اختصاص | BitAndAssign | ||||
&& | expr && expr | AND منطقی با قطع کوتاه | |||||
* | expr * expr | ضرب عددی | Mul | ||||
*= | var *= expr | ضرب عددی و اختصاص | MulAssign | ||||
* | *expr | dereference | Deref | ||||
* | *const type , *mut type | اشارهگر خام | |||||
+ | trait + trait , 'a + trait | محدودیت ترکیبی برای نوع | |||||
+ | expr + expr | جمع عددی | Add | ||||
+= | var += expr | جمع عددی و اختصاص | AddAssign | ||||
, | expr, expr | جداکننده آرگومان یا عنصر | |||||
- | - expr | منفی کردن عدد | Neg | ||||
- | expr - expr | تفریق عددی | Sub | ||||
-= | var -= expr | تفریق عددی و اختصاص | SubAssign | ||||
-> | fn(...) -> type , ` | … | -> type` | نوع بازگشتی تابع یا closure | |||
. | expr.ident | دسترسی به فیلد | |||||
. | expr.ident(expr, ...) | فراخوانی متد | |||||
. | expr.0 , expr.1 , … | ایندکسگذاری tuple | |||||
.. | .. , expr.. , ..expr , expr..expr | بازهی راست-باز | PartialOrd | ||||
..= | ..=expr , expr..=expr | بازهی راست-بسته | PartialOrd | ||||
.. | ..expr | بهروزرسانی literal ساختار | |||||
.. | variant(x, ..) , struct_type { x, .. } | الگوی «و بقیه» در pattern binding | |||||
... | expr...expr | (منسوخشده، بهجای آن از ..= استفاده کنید) الگوی بازهی بسته | |||||
/ | expr / expr | تقسیم عددی | Div | ||||
/= | var /= expr | تقسیم عددی و اختصاص | DivAssign | ||||
: | pat: type , ident: type | محدودیت نوع | |||||
: | ident: expr | مقداردهی به فیلد ساختار | |||||
: | 'a: loop {...} | برچسب حلقه | |||||
; | expr; | پایاندهنده عبارت یا آیتم | |||||
; | [...; len] | بخشی از نحوه تعریف آرایه با اندازه ثابت | |||||
<< | expr << expr | شیفت به چپ بیتی | Shl | ||||
<<= | var <<= expr | شیفت به چپ بیتی و اختصاص | ShlAssign | ||||
< | expr < expr | مقایسه کوچکتر از | PartialOrd | ||||
<= | expr <= expr | مقایسه کوچکتر مساوی | PartialOrd | ||||
= | var = expr , ident = type | تخصیص یا تساوی | |||||
== | expr == expr | مقایسه برابری | PartialEq | ||||
=> | pat => expr | بخشی از نگارش match | |||||
> | expr > expr | مقایسه بزرگتر از | PartialOrd | ||||
>= | expr >= expr | مقایسه بزرگتر مساوی | PartialOrd | ||||
>> | expr >> expr | شیفت به راست بیتی | Shr | ||||
>>= | var >>= expr | شیفت به راست بیتی و اختصاص | ShrAssign | ||||
@ | ident @ pat | pattern binding | |||||
^ | expr ^ expr | XOR بیتی | BitXor | ||||
^= | var ^= expr | XOR بیتی و اختصاص | BitXorAssign | ||||
` | ` | `pat | pat` | جایگزینهای الگو (pattern alternatives) | |||
` | ` | `expr | expr` | OR بیتی | BitOr | ||
` | =` | `var | = expr` | OR بیتی و اختصاص | BitOrAssign | ||
` | ` | `expr | expr` | OR منطقی با قطع کوتاه | |||
? | expr? | انتشار خطا (error propagation) |
نمادهای غیرعملگری
لیست زیر شامل تمام نمادهایی است که به عنوان عملگر عمل نمیکنند؛ یعنی مانند یک تابع یا فراخوانی متد رفتار نمیکنند.
جدول B-2 نمادهایی را نشان میدهد که به تنهایی ظاهر میشوند و در مکانهای مختلف معتبر هستند.
جدول B-2: سینتکس مستقل
نماد | توضیح | ||
---|---|---|---|
'ident | lifetime نامگذاریشده یا برچسب حلقه | ||
اعداد بههمراه پسوندهایی مثل u8 ، i32 ، f64 ، usize و … | عدد litteral با نوع مشخص | ||
"..." | رشته litteral | ||
r"..." ، r#"..."# ، r##"..."## و غیره | رشته خام؛ کاراکترهای escape تفسیر نمیشوند | ||
b"..." | رشته byte؛ آرایهای از بایت میسازد بهجای رشته | ||
br"..." ، br#"..."# ، br##"..."## و غیره | رشته byte خام؛ ترکیبی از رشته byte و رشته خام | ||
'...' | litteral کاراکتری | ||
b'...' | litteral بایت ASCII | ||
| … | expr | closure |
! | نوع تهی همواره خالی برای توابع واگرا (diverging) | ||
_ | الگوی “نادیدهگرفتهشده”؛ همچنین برای خوانایی بهتر litteralهای عددی |
جدول B-3 نمادهایی را نشان میدهد که در زمینه مسیریابی از سلسلهمراتب ماژول به یک آیتم ظاهر میشوند.
جدول B-3: سینتکس مرتبط با مسیر
نماد | توضیح |
---|---|
ident::ident | مسیر فضای نام |
::path | مسیر نسبی به پیشلود خارجی، جایی که تمام جعبهها (crates)ی دیگر ریشه دارند (یعنی یک مسیر مطلق که به وضوح شامل نام جعبه (crate) است) |
self::path | مسیر نسبی به ماژول جاری (یعنی یک مسیر نسبی به وضوح مشخصشده). |
super::path | مسیر نسبی به والد ماژول جاری |
type::ident , <type as trait>::ident | ثابتها، توابع، و انواع مرتبط |
<type>::... | آیتم مرتبط برای نوعی که نمیتوان به طور مستقیم آن را نامگذاری کرد (مثلاً <&T>::... ، <[T]>::... ، و غیره) |
trait::method(...) | مشخص کردن فراخوانی متد با نامگذاری ویژگیای که آن را تعریف کرده است |
type::method(...) | مشخص کردن فراخوانی متد با نامگذاری نوعی که برای آن تعریف شده است |
<type as trait>::method(...) | مشخص کردن فراخوانی متد با نامگذاری ویژگی و نوع |
جدول B-4 نمادهایی را نشان میدهد که در زمینه استفاده از پارامترهای نوع جنریک ظاهر میشوند.
جدول B-4: جنریکها
نماد | توضیح |
---|---|
path<...> | مشخص کردن پارامترها برای نوع جنریک در یک نوع (مثلاً Vec<u8> ) |
path::<...> , method::<...> | مشخص کردن پارامترها برای نوع جنریک، تابع، یا متد در یک عبارت؛ که معمولاً به آن turbofish میگویند (مثلاً "42".parse::<i32>() ) |
fn ident<...> ... | تعریف تابع جنریک |
struct ident<...> ... | تعریف ساختار جنریک |
enum ident<...> ... | تعریف شمارش جنریک |
impl<...> ... | تعریف پیادهسازی جنریک |
for<...> type | محدودیت طول عمر با رتبه بالاتر |
type<ident=type> | نوع جنریک که یک یا چند نوع مرتبط با آن دارای مقادیر مشخصی هستند (مثلاً Iterator<Item=T> ) |
جدول B-5 نمادهایی را نشان میدهد که در زمینه محدود کردن پارامترهای نوع جنریک با محدودیتهای ویژگی ظاهر میشوند.
جدول B-5: محدودیتهای ویژگی
نماد | توضیح |
---|---|
T: U | پارامتر جنریک T محدود به انواع که U را پیادهسازی میکنند |
T: 'a | نوع جنریک T باید طول عمر بیشتری از طول عمر 'a داشته باشد (یعنی نوع نمیتواند به صورت گذرا شامل ارجاعاتی با طول عمر کوتاهتر از 'a باشد) |
T: 'static | نوع جنریک T شامل ارجاعات قرضگرفتهشدهای به جز ارجاعات 'static نیست |
'b: 'a | طول عمر جنریک 'b باید طول عمر بیشتری از طول عمر 'a داشته باشد |
T: ?Sized | اجازه دادن به پارامتر نوع جنریک برای اینکه نوعی با اندازه پویا باشد |
'a + trait , trait + trait | محدودیت نوع ترکیبی |
جدول B-6: ماکروها و ویژگیها
نماد | توضیح |
---|---|
#[meta] | attribute بیرونی |
#![meta] | attribute درونی |
$ident | جایگذاری در ماکرو |
$ident:kind | metavariable ماکرو |
$(...)... | تکرار در ماکرو |
ident!(...) ، ident!{...} ، ident![...] | فراخوانی ماکرو |
جدول B-7: نظرات
نماد | توضیح |
---|---|
// | نظر تکخطی |
//! | نظر مستند داخلی تکخطی |
/// | نظر مستند خارجی تکخطی |
/*...*/ | نظر بلوکی |
/*!...*/ | نظر مستند داخلی بلوکی |
/**...*/ | نظر مستند خارجی بلوکی |
جدول B-8: تاپلها
جدول B-8 زمینههایی را نشان میدهد که در آنها از پرانتز استفاده میشود.
جدول B-8: پرانتزها
نماد | توضیح |
---|---|
() | tuple تهی (یا همان unit)، هم بهصورت litteral و هم بهصورت نوع |
(expr) | عبارت داخل پرانتز |
(expr,) | عبارت tuple تکعضوی |
(type,) | نوع tuple تکعضوی |
(expr, ...) | عبارت tuple |
(type, ...) | نوع tuple |
expr(expr, ...) | فراخوانی تابع؛ همچنین برای مقداردهی به tuple structها و variantهای tuple enum بهکار میرود |
جدول B-10: براکتها
زمینه | توضیح |
---|---|
[...] | لیترال آرایه |
[expr; len] | لیترال آرایه که شامل len نسخه از expr است |
[type; len] | نوع آرایه که شامل len نمونه از type است |
expr[expr] | اندیسگذاری مجموعه. قابل اضافهبارگذاری (Index , IndexMut ) |
expr[..] , expr[a..] , expr[..b] , expr[a..b] | اندیسگذاری مجموعه که شبیه به برش مجموعه عمل میکند، با استفاده از Range ، RangeFrom ، RangeTo ، یا RangeFull به عنوان “اندیس” |
زمینه | توضیح |
---|---|
{...} | عبارت block |
Type {...} | literal ساختار |
جدول B-10 زمینههایی را نشان میدهد که در آنها از کروشه (براکت مربعی) استفاده میشود.
جدول B-10: کروشهها (براکتهای مربعی)
زمینه | توضیح |
---|---|
[...] | literal آرایه |
[expr; len] | literal آرایه شامل len نسخه از expr |
[type; len] | نوع آرایه شامل len نمونه از type |
expr[expr] | ایندکسگذاری روی مجموعهها. قابل بارگذاری مجدد (Index ، IndexMut ) |
expr[..] ، expr[a..] ، expr[..b] ، expr[a..b] | ایندکسگذاری روی مجموعهها بهشکل شبیهسازیشدهی برش (slicing)، با استفاده از Range ، RangeFrom ، RangeTo ، یا RangeFull |