ضمیمه ب: عملگرها و نمادها
این ضمیمه شامل واژهنامهای از سینتکس زبان Rust است، از جمله عملگرها و سایر نمادهایی که به تنهایی یا در زمینه مسیرها، جنریکها، محدودیتهای ویژگی، ماکروها، ویژگیها، نظرات، تاپلها و براکتها ظاهر میشوند.
عملگرها
جدول B-1 عملگرهای موجود در Rust، یک مثال از چگونگی ظاهر شدن عملگر در زمینه، توضیح کوتاه و اینکه آیا آن عملگر قابل اضافهبارگذاری است یا نه را نشان میدهد. اگر یک عملگر قابل اضافهبارگذاری باشد، ویژگی مرتبط برای اضافهبارگذاری آن عملگر ذکر شده است.
جدول B-1: عملگرها
عملگر | مثال | توضیح | Overloadable؟ |
---|---|---|---|
! | 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 | نوع اشارهگر (Pointer) ارجاعی | |
& | expr & expr | AND بیتی | BitAnd |
&= | var &= expr | AND بیتی و انتساب | BitAndAssign |
&& | expr && expr | AND منطقی کوتاه | |
* | expr * expr | ضرب حسابی | Mul |
*= | var *= expr | ضرب حسابی و انتساب | MulAssign |
* | *expr | رفع ارجاع | Deref |
* | *const type , *mut type | اشارهگر (Pointer) خام | |
+ | 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.. , ..expr , expr..expr | محدوده راستانحصاری | PartialOrd |
..= | ..=expr , expr..=expr | محدوده راستشامل | PartialOrd |
.. | ..expr | سینتکس بهروزرسانی literal ساختار | |
.. | variant(x, ..) , struct_type { x, .. } | الگوی “و بقیه” | |
... | 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 | بایند الگو | |
^ | expr ^ expr | XOR بیتی | BitXor |
^= | var ^= expr | XOR بیتی و انتساب | BitXorAssign |
| | pat | pat | جایگزینهای الگو | |
| | expr | expr | OR بیتی | BitOr |
|= | var |= expr | OR بیتی و انتساب | BitOrAssign |
|| | expr || expr | OR منطقی کوتاه | |
? | expr? | انتشار خطا |
نمادهای غیرعملگری
لیست زیر شامل تمام نمادهایی است که به عنوان عملگر عمل نمیکنند؛ یعنی مانند یک تابع یا فراخوانی متد رفتار نمیکنند.
جدول B-2 نمادهایی را نشان میدهد که به تنهایی ظاهر میشوند و در مکانهای مختلف معتبر هستند.
جدول B-2: سینتکس مستقل
نماد | توضیح |
---|---|
'ident | طول عمر نامگذاریشده یا برچسب حلقه |
...u8 , ...i32 , ...f64 , ...usize , etc. | لیترال عددی با نوع مشخص |
"..." | لیترال رشته |
r"..." , r#"..."# , r##"..."## , etc. | لیترال رشته خام، کاراکترهای escape پردازش نمیشوند |
b"..." | لیترال رشته بایتی؛ آرایهای از بایتها به جای رشته میسازد |
br"..." , br#"..."# , br##"..."## , etc. | لیترال رشته خام بایتی، ترکیبی از رشته خام و رشته بایتی |
'...' | لیترال کاراکتر |
b'...' | لیترال بایت ASCII |
|…| expr | closure |
! | همیشه خالی، نوع bottom برای توابع واگرا |
_ | بایند الگوی “نادیدهگرفتهشده”؛ همچنین برای خواناتر کردن لیترالهای عددی استفاده میشود |
جدول 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] | ویژگی خارجی |
#![meta] | ویژگی داخلی |
$ident | جایگزینی ماکرو |
$ident:kind | گرفتن ماکرو |
$(…)… | تکرار ماکرو |
ident!(...) , ident!{...} , ident![...] | فراخوانی ماکرو |
جدول B-7: نظرات
نماد | توضیح |
---|---|
// | نظر تکخطی |
//! | نظر مستند داخلی تکخطی |
/// | نظر مستند خارجی تکخطی |
/*...*/ | نظر بلوکی |
/*!...*/ | نظر مستند داخلی بلوکی |
/**...*/ | نظر مستند خارجی بلوکی |
جدول B-8: تاپلها
نماد | توضیح |
---|---|
() | تاپل خالی (معروف به واحد)، هم به عنوان لیترال و هم نوع |
(expr) | عبارت پرانتزدار |
(expr,) | عبارت تاپل تکعنصری |
(type,) | نوع تاپل تکعنصری |
(expr, ...) | عبارت تاپل |
(type, ...) | نوع تاپل |
expr(expr, ...) | عبارت فراخوانی تابع؛ همچنین برای مقداردهی اولیه به struct های تاپلی و واریانتهای enum تاپلی استفاده میشود |
expr.0 , expr.1 , etc. | اندیسگذاری تاپل |
جدول B-9: کروشهها
زمینه | توضیح |
---|---|
{...} | عبارت بلوک |
Type {...} | لیترال struct |
جدول 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 به عنوان “اندیس” |