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

الملحق ب: (المعاملات) Operators و (الرموز) Symbols

يحتوي هذا الملحق على مسرد لـ (الصيغة) Syntax الخاصة بلغة Rust، بما في ذلك (المعاملات) Operators و (الرموز) Symbols الأخرى التي تظهر بمفردها أو في سياق (المسارات) Paths، و (الأنواع العامة) Generics، و (قيود السمات) Trait bounds، و (الماكروهات) Macros، و (السمات) Attributes، و (التعليقات) Comments، و (المجموعات) Tuples، و (الأقواس) Brackets.

Operators

يحتوي الجدول B-1 على Operators في Rust، ومثال على كيفية ظهور Operator في السياق، وشرح موجز، وما إذا كان Operator (قابل للتحميل الزائد) Overloadable. إذا كان Operator Overloadable، يتم إدراج Trait ذي الصلة الذي يجب استخدامه لتحميل هذا Operator الزائد.

الجدول B-1: Operators

OperatorمثالالشرحOverloadable؟
!ident!(...), ident!{...}, ident![...](توسيع الماكرو) Macro expansion
!!expr(المكمل المنطقي أو على مستوى البت) Bitwise or logical complementNot
!=expr != expr(مقارنة عدم التساوي) Nonequality comparisonPartialEq
%expr % expr(باقي القسمة الحسابي) Arithmetic remainderRem
%=var %= expr(باقي القسمة الحسابي والإسناد) Arithmetic remainder and assignmentRemAssign
&&expr, &mut expr(الاستعارة) Borrow
&&type, &mut type, &'a type, &'a mut type(نوع المؤشر المستعار) Borrowed pointer type
&expr & expr(البتي AND) Bitwise ANDBitAnd
&=var &= expr(البتي AND والإسناد) Bitwise AND and assignmentBitAndAssign
&&expr && expr(المنطقي AND ذو الدائرة القصيرة) Short-circuiting logical AND
*expr * expr(الضرب الحسابي) Arithmetic multiplicationMul
*=var *= expr(الضرب الحسابي والإسناد) Arithmetic multiplication and assignmentMulAssign
**expr(إلغاء الإشارة) DereferenceDeref
**const type, *mut type(المؤشر الخام) Raw pointer
+trait + trait, 'a + trait(قيد النوع المركب) Compound type constraint
+expr + expr(الجمع الحسابي) Arithmetic additionAdd
+=var += expr(الجمع الحسابي والإسناد) Arithmetic addition and assignmentAddAssign
,expr, expr(فاصل الوسائط والعناصر) Argument and element separator
-- expr(النفي الحسابي) Arithmetic negationNeg
-expr - expr(الطرح الحسابي) Arithmetic subtractionSub
-=var -= expr(الطرح الحسابي والإسناد) Arithmetic subtraction and assignmentSubAssign
->fn(...) -> type, |…| -> type(نوع الإرجاع للدالة والإغلاق) Function and closure return type
.expr.ident(الوصول إلى الحقل) Field access
.expr.ident(expr, ...)(استدعاء الدالة) Method call
.expr.0, expr.1, and so on(فهرسة المجموعة) Tuple indexing
...., expr.., ..expr, expr..expr(حرفي النطاق غير الشامل للطرف الأيمن) Right-exclusive range literalPartialOrd
..=..=expr, expr..=expr(حرفي النطاق الشامل للطرف الأيمن) Right-inclusive range literalPartialOrd
....expr(صيغة تحديث حرفي الهيكل) Struct literal update syntax
..variant(x, ..), struct_type { x, .. }(ربط النمط “والباقي”) "And the rest" pattern binding
...expr...expr(مهمل، استخدم ..= بدلاً منه) في نمط: (نمط النطاق الشامل) inclusive range pattern
/expr / expr(القسمة الحسابية) Arithmetic divisionDiv
/=var /= expr(القسمة الحسابية والإسناد) Arithmetic division and assignmentDivAssign
:pat: type, ident: type(القيود) Constraints
:ident: expr(مهيئ حقل الهيكل) Struct field initializer
:'a: loop {...}(تسمية الحلقة) Loop label
;expr;(مُنهي العبارة والعنصر) Statement and item terminator
;[...; len]جزء من (صيغة المصفوفة ذات الحجم الثابت) fixed-size array syntax
<<expr << expr(الإزاحة لليسار) Left-shiftShl
<<=var <<= expr(الإزاحة لليسار والإسناد) Left-shift and assignmentShlAssign
<expr < expr(مقارنة أقل من) Less than comparisonPartialOrd
<=expr <= expr(مقارنة أقل من أو يساوي) Less than or equal to comparisonPartialOrd
=var = expr, ident = type(الإسناد/التكافؤ) Assignment/equivalence
==expr == expr(مقارنة التساوي) Equality comparisonPartialEq
=>pat => exprجزء من (صيغة ذراع المطابقة) match arm syntax
>expr > expr(مقارنة أكبر من) Greater than comparisonPartialOrd
>=expr >= expr(مقارنة أكبر من أو يساوي) Greater than or equal to comparisonPartialOrd
>>expr >> expr(الإزاحة لليمين) Right-shiftShr
>>=var >>= expr(الإزاحة لليمين والإسناد) Right-shift and assignmentShrAssign
@ident @ pat(ربط النمط) Pattern binding
^expr ^ expr(البتي OR الحصري) Bitwise exclusive ORBitXor
^=var ^= expr(البتي OR الحصري والإسناد) Bitwise exclusive OR and assignmentBitXorAssign
|pat | pat(بدائل النمط) Pattern alternatives
|expr | expr(البتي OR) Bitwise ORBitOr
|=var |= expr(البتي OR والإسناد) Bitwise OR and assignmentBitOrAssign
||expr || expr(المنطقي OR ذو الدائرة القصيرة) Short-circuiting logical OR
?expr?(نشر الخطأ) Error propagation

Non-operator Symbols

تحتوي الجداول التالية على جميع Symbols التي لا تعمل كـ Operators؛ أي أنها لا تتصرف مثل استدعاء دالة أو Method call.

يعرض الجدول B-2 Symbols التي تظهر بمفردها وتكون صالحة في مجموعة متنوعة من المواقع.

الجدول B-2: Stand-alone Syntax

Symbolالشرح
'ident(عمر مسمى أو تسمية حلقة) Named lifetime or loop label
Digits immediately followed by u8, i32, f64, usize, and so on(حرفي رقمي من نوع محدد) Numeric literal of specific type
"..."(حرفي سلسلة نصية) String literal
r"...", r#"..."#, r##"..."##, and so on(حرفي سلسلة نصية خام) Raw string literal؛ لا تتم معالجة (أحرف الهروب) escape characters
b"..."(حرفي سلسلة بايت) Byte string literal؛ ينشئ (مصفوفة من البايتات) array of bytes بدلاً من String
br"...", br#"..."#, br##"..."##, and so on(حرفي سلسلة بايت خام) Raw byte string literal؛ مزيج من Raw و Byte string literal
'...'(حرفي محرف) Character literal
b'...'(حرفي بايت ASCII) ASCII byte literal
|…| expr(الإغلاق) Closure
!(النوع السفلي الفارغ دائمًا للدوال المتباينة) Always-empty bottom type for diverging functions
_(ربط النمط “المتجاهل”) "Ignored" pattern binding؛ يستخدم أيضًا لجعل (الحرفيات الصحيحة) integer literals قابلة للقراءة

يعرض الجدول B-3 Symbols التي تظهر في سياق Path عبر (التسلسل الهرمي للوحدة) module hierarchy إلى (عنصر) item.

الجدول B-3: Path-Related Syntax

Symbolالشرح
ident::ident(مسار مساحة الاسم) Namespace path
super::pathPath بالنسبة إلى (الوالد) parent للوحدة الحالية
type::ident, <type as trait>::ident(الثوابت والدوال والأنواع المرتبطة) Associated constants, functions, and types
<type>::...(العنصر المرتبط) Associated item لـ type لا يمكن تسميته مباشرة (على سبيل المثال، <&T>::...، <[T]>::...، وهكذا)
trait::method(...)(إزالة الغموض) Disambiguating عن Method call عن طريق تسمية Trait الذي يحدده
type::method(...)Disambiguating عن Method call عن طريق تسمية type الذي تم تعريفه من أجله
<type as trait>::method(...)Disambiguating عن Method call عن طريق تسمية Trait و type

يعرض الجدول B-4 Symbols التي تظهر في سياق استخدام (معلمات النوع العامة) generic type parameters.

الجدول B-4: Generics

Symbolالشرح
path<...>يحدد (المعلمات) parameters لـ generic type في type (على سبيل المثال، Vec<u8>)
path::<...>, method::<...>يحدد parameters لـ generic type، function، أو method في (تعبير) expression؛ يشار إليه غالبًا باسم turbofish (على سبيل المثال، "42".parse::<i32>())
fn ident<...> ...تعريف generic function
struct ident<...> ...تعريف (هيكل عام) generic structure
enum ident<...> ...تعريف (تعداد عام) generic enumeration
impl<...> ...تعريف (تنفيذ عام) generic implementation
for<...> type(قيود العمر ذات الرتبة الأعلى) Higher ranked lifetime bounds
type<ident=type>Generic type حيث تحتوي واحدة أو أكثر من associated types على (تعيينات محددة) specific assignments (على سبيل المثال، Iterator<Item=T>)

يعرض الجدول B-5 Symbols التي تظهر في سياق تقييد generic type parameters باستخدام trait bounds.

الجدول B-5: Trait Bound Constraints

Symbolالشرح
T: UGeneric parameter T مقيد بـ types التي تنفذ U
T: 'aGeneric type T يجب أن يعيش أطول من lifetime 'a (مما يعني أن type لا يمكن أن يحتوي بشكل متعدٍ على أي (مراجع) references ذات lifetimes أقصر من 'a)
T: 'staticGeneric type T لا يحتوي على borrowed references بخلاف static
'b: 'aGeneric lifetime 'b يجب أن يعيش أطول من lifetime 'a
T: ?Sizedيسمح لـ generic type parameter بأن يكون (نوعًا بحجم ديناميكي) dynamically sized type
'a + trait, trait + traitCompound type constraint

يعرض الجدول B-6 Symbols التي تظهر في سياق استدعاء أو تعريف Macros وتحديد Attributes على item.

الجدول B-6: Macros and Attributes

Symbolالشرح
#[meta](سمة خارجية) Outer attribute
#![meta](سمة داخلية) Inner attribute
$ident(استبدال الماكرو) Macro substitution
$ident:kind(متغير الماكرو الوصفي) Macro metavariable
$(...)...(تكرار الماكرو) Macro repetition
ident!(...), ident!{...}, ident![...](استدعاء الماكرو) Macro invocation

يعرض الجدول B-7 Symbols التي تنشئ Comments.

الجدول B-7: Comments

Symbolالشرح
//(تعليق سطر) Line comment
//!(تعليق توثيق سطر داخلي) Inner line doc comment
///(تعليق توثيق سطر خارجي) Outer line doc comment
/*...*/(تعليق كتلة) Block comment
/*!...*/(تعليق توثيق كتلة داخلي) Inner block doc comment
/**...*/(تعليق توثيق كتلة خارجي) Outer block doc comment

يعرض الجدول B-8 السياقات التي تُستخدم فيها Parentheses.

الجدول B-8: Parentheses

Symbolالشرح
()(مجموعة فارغة) Empty tuple (تُعرف أيضًا باسم unit)، حرفي ونوع
(expr)(تعبير بين قوسين) Parenthesized expression
(expr,)(تعبير مجموعة بعنصر واحد) Single-element tuple expression
(type,)(نوع مجموعة بعنصر واحد) Single-element tuple type
(expr, ...)(تعبير مجموعة) Tuple expression
(type, ...)(نوع مجموعة) Tuple type
expr(expr, ...)(تعبير استدعاء دالة) Function call expression؛ يستخدم أيضًا لتهيئة tuple struct و tuple enum

يعرض الجدول B-9 السياقات التي تُستخدم فيها (الأقواس المعقوفة) Curly Brackets.

الجدول B-9: Curly Brackets

السياقالشرح
{...}(تعبير كتلة) Block expression
Type {...}(حرفي الهيكل) Struct literal

يعرض الجدول B-10 السياقات التي تُستخدم فيها (الأقواس المربعة) Square Brackets.

الجدول B-10: Square Brackets

السياقالشرح
[...](حرفي المصفوفة) Array literal
[expr; len]Array literal يحتوي على len نسخة من expr
[type; len](نوع المصفوفة) Array type يحتوي على len من type
expr[expr](فهرسة المجموعة) Collection indexing؛ Overloadable (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Collection indexing يتظاهر بأنه (تقطيع المجموعة) collection slicing، باستخدام Range، RangeFrom، RangeTo، أو RangeFull كـ “index”