Lampiran B: Operator dan Simbol

Lampiran ini mencakup glosarium tentang sintaksis Cairo.

Operator

Tabel B-1 berisi operator dalam bahasa Cairo, contoh penggunaan operator dalam konteks, penjelasan singkat, dan apakah operator tersebut dapat di-overload. Jika suatu operator dapat di-overload, maka dituliskan trait yang relevan untuk meng-overload operator tersebut.

Tabel B-1: Operator

OperatorContohPenjelasanDapat Di-Overload?
!!exprKomplemen bitwise atau logikaNot
!=expr != exprPerbandingan ketidaksetaraanPartialEq
%expr % exprSisa pembagian aritmatikaRem
%=var %= exprSisa pembagian aritmatika dan assignmentRemEq
&expr & exprAND bitwiseBitAnd
&&expr && exprAND logika dengan short-circuiting
*expr * exprPerkalian aritmatikaMul
*=var *= exprPerkalian aritmatika dan assignmentMulEq
@@varSnapshot
**varDesnap
+expr + exprPenambahan aritmatikaAdd
+=var += exprPenambahan aritmatika dan assignmentAddEq
,expr, exprPemisah argumen dan elemen
--exprPenyangkalan aritmatikaNeg
-expr - exprPengurangan aritmatikaSub
-=var -= exprPengurangan aritmatika dan assignmentSubEq
->fn(...) -> type, |...| -> typeTipe kembalian fungsi dan closure
.expr.identAkses anggota
/expr / exprPembagian aritmatikaDiv
/=var /= exprPembagian aritmatika dan assignmentDivEq
:pat: type, ident: typeBatasan
:ident: exprInisialisasi field struct
;expr;Penutup pernyataan dan item
<expr < exprPerbandingan kurang dariPartialOrd
<=expr <= exprPerbandingan kurang dari atau sama denganPartialOrd
=var = exprAssignment
==expr == exprPerbandingan kesetaraanPartialEq
=>pat => exprBagian dari sintaksis lengan match
>expr > exprPerbandingan lebih dariPartialOrd
>=expr >= exprPerbandingan lebih dari atau sama denganPartialOrd
^expr ^ exprXOR bitwiseBitXor
|expr | exprOR bitwiseBitOr
||expr || exprOR logika dengan short-circuiting

Simbol Non Operator

Berikut ini adalah daftar semua simbol yang bukan digunakan sebagai operator; dengan kata lain, simbol-simbol ini tidak memiliki perilaku yang sama seperti pemanggilan fungsi atau metode.

Tabel B-2 menunjukkan simbol-simbol yang muncul sendiri dan valid dalam berbagai lokasi.

Tabel B-2: Sintaksis Tunggal

SimbolPenjelasan
..._u8, ..._usize, dll.Literal numerik dari tipe tertentu
'...'String pendek
_Pola ikut-aba; juga digunakan untuk membuat literal bilangan bulat mudah dibaca

Tabel B-3 menunjukkan simbol-simbol yang digunakan dalam konteks jalur hierarki modul untuk mengakses suatu item.

Tabel B-3: Sintaksis Terkait Jalur

SimbolPenjelasan
ident::identJalur namespace
super::pathJalur relatif terhadap induk modul saat ini
trait::method(...)Mendisambiguasi pemanggilan metode dengan menyebutkan trait yang mendefinisikannya

Tabel B-4 menunjukkan simbol-simbol yang muncul dalam konteks penggunaan parameter tipe generik.

Tabel B-4: Generik

SimbolPenjelasan
path<...>Menentukan parameter untuk tipe generik dalam suatu tipe (mis., Vec<u8>)
path::<...>, method::<...>Menentukan parameter untuk tipe generik, fungsi, atau metode dalam suatu ekspresi; sering disebut sebagai turbofish
fn ident<...> ...Mendefinisikan fungsi generik
struct ident<...> ...Mendefinisikan struktur generik
enum ident<...> ...Mendefinisikan enumerasi generik
impl<...> ...Mendefinisikan implementasi generik

Tabel B-5 menunjukkan simbol-simbol yang muncul dalam konteks pemanggilan atau definisi makro dan penentuan atribut pada suatu item.

Tabel B-5: Makro dan Atribut

SimbolPenjelasan
#[meta]Atribut luar

Tabel B-6 menunjukkan simbol-simbol yang membuat komentar.

Tabel B-6: Komentar

SimbolPenjelasan
//Komentar baris

Tabel B-7 menunjukkan simbol-simbol yang muncul dalam konteks penggunaan tuple.

Tabel B-7: Tuple

SimbolPenjelasan
()Tuple kosong (juga disebut unit), baik literal maupun tipe
(expr)Ekspresi dalam tanda kurung
(expr,)Ekspresi tuple dengan satu elemen
(type,)Tipe tuple dengan satu elemen
(expr, ...)Ekspresi tuple
(type, ...)Tipe tuple
expr(expr, ...)Pemanggilan fungsi; juga digunakan untuk menginisialisasi struct tuple dan varian enum tuple

Tabel B-8 menunjukkan konteks di mana kurung kurawal digunakan.

Tabel B-8: Kurung Kurawal

KonteksPenjelasan
{...}Ekspresi blok
Type {...}Literal struct