Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

این ضمیمه شامل واژه‌نامه‌ای از سینتکس زبان 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 & exprAND بیتیBitAnd
&=var &= exprAND بیتی و اختصاصBitAndAssign
&&expr && exprAND منطقی با قطع کوتاه
*expr * exprضرب عددیMul
*=var *= exprضرب عددی و اختصاصMulAssign
**exprdereferenceDeref
**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 @ patpattern binding
^expr ^ exprXOR بیتیBitXor
^=var ^= exprXOR بیتی و اختصاصBitXorAssign
```patpat`جایگزین‌های الگو (pattern alternatives)
```exprexpr`OR بیتیBitOr
`=``var= expr`OR بیتی و اختصاصBitOrAssign
```exprexpr`OR منطقی با قطع کوتاه
?expr?انتشار خطا (error propagation)

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

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

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

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

نمادتوضیح
'identlifetime نام‌گذاری‌شده یا برچسب حلقه
اعداد به‌همراه پسوندهایی مثل u8، i32، f64، usize و …عدد litteral با نوع مشخص
"..."رشته litteral
r"..."، r#"..."#، r##"..."## و غیرهرشته خام؛ کاراکترهای escape تفسیر نمی‌شوند
b"..."رشته byte؛ آرایه‌ای از بایت می‌سازد به‌جای رشته
br"..."، br#"..."#، br##"..."## و غیرهرشته byte خام؛ ترکیبی از رشته byte و رشته خام
'...'litteral کاراکتری
b'...'litteral بایت ASCII
exprclosure
!نوع تهی همواره خالی برای توابع واگرا (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:kindmetavariable ماکرو
$(...)...تکرار در ماکرو
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