ضمیمه ب: عملگرها و نمادها

این ضمیمه شامل واژه‌نامه‌ای از سینتکس زبان 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 & exprAND بیتیBitAnd
&=var &= exprAND بیتی و انتسابBitAndAssign
&&expr && exprAND منطقی کوتاه
*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 ^ exprXOR بیتیBitXor
^=var ^= exprXOR بیتی و انتسابBitXorAssign
|pat | patجایگزین‌های الگو
|expr | exprOR بیتیBitOr
|=var |= exprOR بیتی و انتسابBitOrAssign
||expr || exprOR منطقی کوتاه
?expr?انتشار خطا

نمادهای غیرعملگری

لیست زیر شامل تمام نمادهایی است که به عنوان عملگر عمل نمی‌کنند؛ یعنی مانند یک تابع یا فراخوانی متد رفتار نمی‌کنند.

جدول B-2 نمادهایی را نشان می‌دهد که به تنهایی ظاهر می‌شوند و در مکان‌های مختلف معتبر هستند.

جدول B-2: سینتکس مستقل

نمادتوضیح
'identطول عمر نام‌گذاری‌شده یا برچسب حلقه
...u8, ...i32, ...f64, ...usize, etc.لیترال عددی با نوع مشخص
"..."لیترال رشته
r"...", r#"..."#, r##"..."##, etc.لیترال رشته خام، کاراکترهای escape پردازش نمی‌شوند
b"..."لیترال رشته بایتی؛ آرایه‌ای از بایت‌ها به جای رشته می‌سازد
br"...", br#"..."#, br##"..."##, etc.لیترال رشته خام بایتی، ترکیبی از رشته خام و رشته بایتی
'...'لیترال کاراکتر
b'...'لیترال بایت ASCII
|…| exprclosure
!همیشه خالی، نوع 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 به عنوان “اندیس”