ضمیمه ب: عملگرها و نمادها
این ضمیمه شامل واژهنامهای از سینتکس زبان 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 |