B-ilova: Operatorlar va Belgilar

Ushbu qo'shimchada Rust sintaksisining lug'ati, shu jumladan o'z-o'zidan yoki yo'llar (paths), umumlashmalar (generiklar), turlar, makroslar, atributlar, sharhlar, katakchalar (tuples) va qavslar kontekstida paydo bo'ladigan operatorlar va boshqa belgilar mavjud.

Operatorlar

B-1 jadvalida Rust tili operatorlari, operator qanday kontekstda ko'rinishi, qisqa tushuntirish va ushbu operator yuklanishi mumkinmi (overload) yoki yo'qmi ko'rsatilgan. Agar operator yuklanishi mumkin bo'lsa, bu operatorni yuklash uchun foydalanish kerak bo'lgan tegishli trait keltirilgan.

Jadval B-1: Operatorlar

OperatorMisolTushuntirishYuklanishi mumkinmi?
!ident!(...), ident!{...}, ident![...]Makros chaqiruvi
!!exprBit yoki mantiqiy inkorNot
!=expr != exprTengsizlik taqqoslashPartialEq
%expr % exprBo'linishning qolg'iRem
%=var %= exprBo'linishning qolg'i va tayinlashRemAssign
&&expr, &mut exprQarz olish
&&type, &mut type, &'a type, &'a mut typeUshbu tur qarzga olinganligini ko'rsatadi
&expr & exprBitlik VABitAnd
&=var &= exprBitlik VA va tayinlashBitAndAssign
&&expr && exprMantiqiy VA
*expr * exprArifmetik ko'paytirishMul
*=var *= exprArifmetik ko'paytirish va tayinlashMulAssign
**exprHavolani bekor qilishDeref
**const type, *mut typeUshbu tur xom ko'rsatkich ekanligini ko'rsatadi
+trait + trait, 'a + traitMurakkab turdagi cheklov
+expr + exprArifmetik qo'shishAdd
+=var += exprArifmetik qo'shish va tayinlashAddAssign
,expr, exprArgument va element ajratuvchisi
-- exprArifmetik inkorNeg
-expr - exprArifmetik ayirishSub
-=var -= exprArifmetik ayirish va tayinlashSubAssign
->fn(...) -> type, |...| -> typeFunktsiya va yopilishning qaytish turi
.expr.identA'zoga (elementga) kirish
...., expr.., ..expr, expr..exprO'ngdan tashqari raqamlar oralig'ini bildiradiPartialOrd
..=..=expr, expr..=exprRaqamlar oralig'ini, shu jumladan o'ng tomonni bildiradiPartialOrd
....exprStrukturani yangilash sintaksisi
..variant(x, ..), struct_type { x, .. }"Va boshqa hamma narsa"ni bog'lash
...expr...expr(Eskirgan, yangi sintaksisdan foydalaning ..= ) Inklyuziv diapazonni aniqlashda ishlatiladi
/expr / exprArifmetik bo'lishDiv
/=var /= exprArifmetik bo'lish va tayinlashDivAssign
:pat: type, ident: typeTurlarning cheklovlari
:ident: exprTuzilish maydonini ishga tushirish
:'a: loop {...}Tsikl yorlig'i
;expr;Ko'rsatma va elementning oxiri belgisi
;[...; len]Qat'iy o'lchamdagi massiv sintaksisining qismi
<<expr << exprBitlik chapga surishShl
<<=var <<= exprBitlik chapga surish va tayinlashShlAssign
<expr < expr"Kamroq" taqqoslashPartialOrd
<=expr <= expr"Kamroq yoki teng" taqqoslashPartialOrd
=var = expr, ident = typeTayinlash/ekvivalentlik
==expr == exprTenglik taqqoslashPartialEq
=>pat => exprMoslama qolipining qismi
>expr > expr"Kattaroq" taqqoslashPartialOrd
>=expr >= expr"Kattaroq yoki teng" taqqoslashPartialOrd
>>expr >> exprBitlik o'ngga surishShr
>>=var >>= exprBitlik o'ngga surish va tayinlashShrAssign
@ident @ patNaqshni bog'lash (Pattern binding)
^expr ^ exprBitlik istisno YOKIBitXor
^=var ^= exprBitlik istisno YOKI va tayinlashBitXorAssign
|pat | patMuqobil naqshlar
|expr | exprBitlik YOKIBitOr
|=var |= exprBitlik YOKI va tayinlashBitOrAssign
||expr || exprQisqa mantiqiy YOKI
?expr?Xato qaytarish

Operator bo'lmagan Belgilar

Quyidagi ro'yxatda operator sifatida ishlamaydigan barcha belgilar mavjud; ya'ni ular funktsiya yoki usul chaqiruvi kabi harakat qilmaydi.

B-2 jadvali o'z-o'zidan paydo bo'ladigan va turli joylarda qabul qilinadigan belgilarni ko'rsatadi.

Jadval B-2: Mustaqil Sintaksis

BelgiTushuntirish
'identNomlangan umrbod yoki tsikl yorlig'i
...u8, ...i32, ...f64, ...usize, va h.k.Ma'lum turdagi sonli literal
"..."Qator (String) literal
r"...", r#"..."#, r##"..."##, va h.k.Qochish belgilarini qayta ishlamaydigan xom satrli literal
b"..."Bayt string literal; string o'rniga bayt massivini hosil qiladi
br"...", br#"..."#, br##"..."##, va h.k.Xom satr baytli harf, xom va baytli harflarning kombinatsiyasi
'...'Belgilar literal
b'...'ASCII bayt literal
|...| exprYopilish
!Har doim bo'sh pastki tur divergiruvchi funksiyalar uchun
_“E'tiborsiz” pattern binding; shuningdek, butun sonli literalni o'qilishi uchun ishlatiladi

Jadval B-3 modul ierarxiyasi orqali elementga yo'l kontekstida ko'rinadigan belgilarni ko'rsatadi.

Jadval B-3: Yo'lga Tegishli Sintaksis

BelgiTushuntirish
ident::identNomlar maydoni yo'li
::pathCrate ildiziga nisbatan yo'l (ya'ni, aniq absolyut yo'l)
self::pathJoriy modulga nisbatan yo'l (ya'ni, aniq nisbiy yo'l)
super::pathJoriy modulning ota moduliga nisbatan yo'l
type::ident, <type as trait>::identTegishli konstantalar, funksiyalar va turlar
<type>::...To'g'ridan-to'g'ri nomlanishi mumkin bo'lmagan turga tegishli element (masalan, <&T>::..., <[T]>::..., va hokazo.)
trait::method(...)Usul chaqiruvini aniqlashtirish uchun usulni aniqlagan traitni nomlash
type::method(...)Usul chaqiruvini aniqlashtirish uchun usul aniqlangan tur nomini ko'rsatish
<type as trait>::method(...)Usul chaqiruvini aniqlashtirish uchun trait va tur nomini ko'rsatish

Jadval B-4 generik turdagi parametrlarni ishlatish kontekstida ko'rinadigan belgilarni ko'rsatadi.

Jadval B-4: Generiklar

BelgiTushuntirish
path<...>Turdagi umumlashtirilgan parametrlar uchun parametrlarni belgilaydi (masalan, Vec<u8>)
path::<...>, method::<...>Ifodada generik tur, funksiya yoki usul parametrlari; ko'pincha turbofish deb ataladi (masalan, "42".parse::<i32>())
fn ident<...> ...Umumlashtirilgan funksiyani aniqlash
struct ident<...> ...Umumlashtirilgan tuzilmani aniqlash
enum ident<...> ...Umumlashtirilgan enum aniqlash
impl<...> ...Umumlashtirilgan amalga oshirishning ta'rifi
for<...> typeYuqori darajadagi umrbod cheklovlar
type<ident=type>Bir yoki bir nechta tegishli turlarga aniq tayinlangan generik tur (masalan, Iterator<Item=T>)

Jadval b-5 ko'rsatadi belgilar turi cheklangan umumlashtirilgan parametr turlaridan foydalanish kontekstida paydo bo'ladi

Jadval B-5: Trait Cheklovlari

BelgiTushuntirish
T: UT Umumlashtirilgan parametri Uni amalga oshiruvchi turlar bilan cheklangan
T: 'aT Umumlashtirilgan turi a umrbodidan uzoqroq bo'lishi kerak (ya'ni, tur hech qanday adan qisqaroq bo'lgan ko'rsatkichlarga ega bo'lmasligi kerak)
T: 'staticT Umumlashtirilgan turi faqat static umrbod ko'rsatkichlarini o'z ichiga oladi
'b: 'a'b umrbodi a umrbodidan uzoqroq bo'lishi kerak
T: ?SizedUmumlashtirilgan tur parametri dinamik o'lchamli tur bo'lishiga ruxsat beradi
'a + trait, trait + traitMurakkab tur cheklovi

Jadval B-6 makrolarni chaqirish yoki aniqlash va elementga atributlarni belgilash kontekstida ko'rinadigan belgilarni ko'rsatadi.

Jadval B-6: Makrolar va Atributlar

BelgiTushuntirish
#[meta]Tashqi atribut
#![meta]Ichki atribut
$identMakro almashtirish
$ident:kindMakro qo'lga olish
$(…)…Makro takrorlash
ident!(...), ident!{...}, ident![...]Makro chaqiruvi

B-7 jadvalida sharhlar yaratadigan belgilar ko'rsatilgan.

Jadval B-7: Kommentariyalar

BelgiTushuntirish
//Ichki bir qatorli hujjat sharhi
//!Tashqi bir qatorli hujjat sharhi
///Tashqi chiziqli doc kommentariya
/*...*/Ko'p qatorli sharh
/*!...*/Ichki ko'p qatorli hujjat sharhi
/**...*/Tashqi ko'p qatorli hujjat sharhi

B-8 jadvalida katakchalardan (tuple-lardan) foydalanish kontekstida paydo bo'ladigan belgilar ko'rsatilgan.

Jadval B-8: Katakchalar (tuples)

BelgiTushuntirish
()Bo'sh tupl (ya'ni, birlik), literal va tur
(expr)Qavs ichidagi ifoda
(expr,)Yagona elementli tupl ifodasi
(type,)Yagona elementli tupl turi
(expr, ...)Tupl ifodasi
(type, ...)Tupl turi
expr(expr, ...)Funksiya chaqiruvi ifodasi; shuningdek, tupl strukturasi va tupl enum variantlarini boshlash uchun ishlatiladi
expr.0, expr.1, va h.k.Tupl indekslash

B-9 jadvali jingalak qavslardan ("{}") foydalanadigan kontekstlarni ko'rsatadi.

Jadval B-9: Jingalak Qavslar

KontekstTushuntirish
{...}Blok ifodasi
Type {...}struct literal

Jadval B-10 to'rtburchak qavslar ishlatiladigan kontekstlarni ko'rsatadi.

Jadval B-10: To'rtburchak Qavslar

KontekstTushuntirish
[...]Array (yig'ilma) literal
[expr; len]len nusxalarini o'z ichiga olgan array literal
[type; len]len nusxalarini o'z ichiga olgan array turi
expr[expr]To'plamni indekslash. Yuklanishi mumkin (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]To'plamni kesishga o'xshash qilib indekslash, Range, RangeFrom, RangeTo yoki RangeFull ni "indeks" sifatida ishlatish