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

Ek B: Operatörler ve Semboller

Bu ek, operatörler ve tek başlarına veya yollar (paths), jenerikler, trait sınırları, makrolar, nitelikler (attributes), yorumlar, demetler (tuples) ve parantezler bağlamında ortaya çıkan diğer semboller dahil olmak üzere Rust’ın sözdizimi (syntax) sözlüğünü içerir.

Operatörler

Tablo B-1, Rust’taki operatörleri, operatörün bağlam içinde nasıl görüneceğine dair bir örneği, kısa bir açıklamayı ve bu operatörün aşırı yüklenebilir (overloadable) olup olmadığını içerir. Bir operatör aşırı yüklenebiliyorsa, o operatörü aşırı yüklemek için kullanılacak ilgili trait listelenmiştir.

Tablo B-1: Operatörler

OperatörÖrnekAçıklamaAşırı Yüklenebilir mi?
!ident!(...), ident!{...}, ident![...]Makro genişletmesi (Macro expansion)
!!exprBit düzeyinde (bitwise) veya mantıksal tümleme (complement)Not
!=expr != exprEşitsizlik karşılaştırmasıPartialEq
%expr % exprAritmetik kalan (mod alma)Rem
%=var %= exprAritmetik kalan ve atamaRemAssign
&&expr, &mut exprÖdünç alma (Borrow)
&&type, &mut type, &'a type, &'a mut typeÖdünç alınan işaretçi türü (Borrowed pointer type)
&expr & exprBit düzeyinde VE (AND)BitAnd
&=var &= exprBit düzeyinde VE ve atamaBitAndAssign
&&expr && exprKısa devre (Short-circuiting) mantıksal VE
*expr * exprAritmetik çarpmaMul
*=var *= exprAritmetik çarpma ve atamaMulAssign
**exprReferansı kaldırma (Dereference)Deref
**const type, *mut typeHam işaretçi (Raw pointer)
+trait + trait, 'a + traitBileşik tür kısıtlaması (Compound type constraint)
+expr + exprAritmetik toplamaAdd
+=var += exprAritmetik toplama ve atamaAddAssign
,expr, exprArgüman ve eleman ayırıcı
-- exprAritmetik negatifleme (negation)Neg
-expr - exprAritmetik çıkarmaSub
-=var -= exprAritmetik çıkarma ve atamaSubAssign
->fn(...) -> type, |…| -> typeFonksiyon ve closure dönüş türü
.expr.identAlan (field) erişimi
.expr.ident(expr, ...)Metot çağrısı
.expr.0, expr.1 ve benzeriDemet (Tuple) indeksleme
...., expr.., ..expr, expr..exprSağdan dışlayıcı (Right-exclusive) aralık literaliPartialOrd
..=..=expr, expr..=exprSağdan kapsayıcı (Right-inclusive) aralık literaliPartialOrd
....exprStruct literali güncelleme sözdizimi
..variant(x, ..), struct_type { x, .. }“Ve geri kalanı” desen bağlaması (pattern binding)
...expr...expr(Kullanımdan kaldırıldı, yerine ..= kullanın) Bir desende: kapsayıcı aralık deseni
/expr / exprAritmetik bölmeDiv
/=var /= exprAritmetik bölme ve atamaDivAssign
:pat: type, ident: typeKısıtlamalar (Constraints)
:ident: exprStruct alanı başlatıcısı (initializer)
:'a: loop {...}Döngü etiketi (Loop label)
;expr;İfade (statement) ve öğe sonlandırıcı
;[...; len]Sabit boyutlu dizi (fixed-size array) sözdiziminin bir parçası
<<expr << exprSola kaydırma (Left-shift)Shl
<<=var <<= exprSola kaydırma ve atamaShlAssign
<expr < exprKüçüktür karşılaştırmasıPartialOrd
<=expr <= exprKüçük veya eşittir karşılaştırmasıPartialOrd
=var = expr, ident = typeAtama/denklik (Assignment/equivalence)
==expr == exprEşitlik karşılaştırmasıPartialEq
=>pat => exprmatch kolu sözdiziminin bir parçası
>expr > exprBüyüktür karşılaştırmasıPartialOrd
>=expr >= exprBüyük veya eşittir karşılaştırmasıPartialOrd
>>expr >> exprSağa kaydırma (Right-shift)Shr
>>=var >>= exprSağa kaydırma ve atamaShrAssign
@ident @ patDesen bağlama (Pattern binding)
^expr ^ exprBit düzeyinde özel VEYA (XOR)BitXor
^=var ^= exprBit düzeyinde özel VEYA ve atamaBitXorAssign
|pat | patDesen alternatifleri
|expr | exprBit düzeyinde VEYA (OR)BitOr
|=var |= exprBit düzeyinde VEYA ve atamaBitOrAssign
||expr || exprKısa devre mantıksal VEYA
?expr?Hata yayılımı (Error propagation)

Operatör Olmayan Semboller (Non-operator Symbols)

Aşağıdaki tablolar, operatör olarak işlev görmeyen; yani bir fonksiyon veya metot çağrısı gibi davranmayan tüm sembolleri içerir.

Tablo B-2, tek başlarına görünen ve çeşitli yerlerde geçerli olan sembolleri gösterir.

Tablo B-2: Bağımsız Sözdizimi (Stand-alone Syntax)

SembolAçıklama
'identAdlandırılmış ömür (Named lifetime) veya döngü etiketi
Hemen ardından u8, i32, f64, usize vb. gelen rakamlarBelirli bir türün sayısal literali
"..."Dize literali (String literal)
r"...", r#"..."#, r##"..."## ve benzeriHam dize literali (Raw string literal); kaçış karakterleri (escape characters) işlenmez
b"..."Bayt dize literali (Byte string literal); bir dize yerine bayt dizisi oluşturur
br"...", br#"..."#, br##"..."## ve benzeriHam bayt dize literali; ham ve bayt dize literalinin birleşimi
'...'Karakter literali (Character literal)
b'...'ASCII bayt literali
|…| exprKapanış (Closure)
!Iraksayan (diverging) fonksiyonlar için her zaman boş taban türü (bottom type)
_“Görmezden gelinen” (Ignored) desen bağlaması; ayrıca tamsayı literallerini okunabilir yapmak için de kullanılır

Tablo B-3, modül hiyerarşisinde bir öğeye giden bir yol (path) bağlamında görünen sembolleri gösterir.

Tablo B-3: Yolla İlgili Sözdizimi (Path-Related Syntax)

SembolAçıklama
ident::identAd alanı yolu (Namespace path)
::pathCrate köküne (root) göreceli yol (yani açıkça mutlak bir yol - absolute path)
self::pathMevcut modüle göreceli yol (yani açıkça göreceli bir yol - relative path)
super::pathMevcut modülün üst modülüne göreceli yol
type::ident, <type as trait>::identİlişkili sabitler, fonksiyonlar ve türler
<type>::...Doğrudan adlandırılamayan bir tür için ilişkili öğe (örneğin, <&T>::..., <[T]>::... vb.)
trait::method(...)Bir metot çağrısının belirsizliğini (disambiguating), onu tanımlayan trait’i adlandırarak giderme
type::method(...)Bir metot çağrısının belirsizliğini, tanımlandığı türü adlandırarak giderme
<type as trait>::method(...)Bir metot çağrısının belirsizliğini trait ve türü adlandırarak giderme

Tablo B-4, jenerik (generic) tür parametrelerinin kullanıldığı bağlamlarda görünen sembolleri gösterir.

Tablo B-4: Jenerikler (Generics)

SembolAçıklama
path<...>Bir türdeki jenerik bir türe parametreleri belirtir (örneğin, Vec<u8>)
path::<...>, method::<...>Bir ifadedeki jenerik bir türe, fonksiyona veya metoda parametreleri belirtir; genellikle turbofish olarak adlandırılır (örneğin, "42".parse::<i32>())
fn ident<...> ...Jenerik fonksiyon tanımlar
struct ident<...> ...Jenerik struct (yapı) tanımlar
enum ident<...> ...Jenerik enum (numaralandırma) tanımlar
impl<...> ...Jenerik implementasyon tanımlar
for<...> typeDaha yüksek dereceli (Higher ranked) ömür sınırları
type<ident=type>Bir veya daha fazla ilişkili türün belirli atamaları olduğu jenerik bir tür (örneğin, Iterator<Item=T>)

Tablo B-5, jenerik tür parametrelerinin trait sınırlarıyla kısıtlandığı bağlamlarda görünen sembolleri gösterir.

Tablo B-5: Trait Sınırı Kısıtlamaları (Trait Bound Constraints)

SembolAçıklama
T: UJenerik parametre T, U’yu uygulayan türlerle kısıtlanmıştır
T: 'aJenerik tür T, 'a ömründen daha uzun yaşamalıdır (outlive) (yani tür, geçişli olarak 'a’dan daha kısa ömürlü referanslar içeremez)
T: 'staticJenerik tür T, 'static olanlar dışında ödünç alınmış referans içermez
'b: 'aJenerik ömür 'b, 'a ömründen daha uzun yaşamalıdır
T: ?SizedJenerik tür parametresinin dinamik olarak boyutlandırılmış bir tür (dynamically sized type) olmasına izin verir
'a + trait, trait + traitBileşik tür kısıtlaması (Compound type constraint)

Tablo B-6, makroların çağrıldığı veya tanımlandığı ve bir öğe üzerinde niteliklerin (attributes) belirtildiği bağlamlarda görünen sembolleri gösterir.

Tablo B-6: Makrolar ve Nitelikler (Macros and Attributes)

SembolAçıklama
#[meta]Dış nitelik (Outer attribute)
#![meta]İç nitelik (Inner attribute)
$identMakro yer değiştirmesi (substitution)
$ident:kindMakro meta-değişkeni (metavariable)
$(...)...Makro tekrarı (repetition)
ident!(...), ident!{...}, ident![...]Makro çağrısı (invocation)

Tablo B-7, yorum (comment) oluşturan sembolleri gösterir.

Tablo B-7: Yorumlar (Comments)

SembolAçıklama
//Satır yorumu
//!İç satır dokümantasyon yorumu (Inner line doc comment)
///Dış satır dokümantasyon yorumu (Outer line doc comment)
/*...*/Blok yorumu
/*!...*/İç blok dokümantasyon yorumu (Inner block doc comment)
/**...*/Dış blok dokümantasyon yorumu (Outer block doc comment)

Tablo B-8, parantezlerin (parentheses) kullanıldığı bağlamları gösterir.

Tablo B-8: Parantezler (Parentheses)

SembolAçıklama
()Boş demet (aka birim - unit), hem literal hem de tür olarak
(expr)Parantez içine alınmış ifade (Parenthesized expression)
(expr,)Tek elemanlı demet ifadesi
(type,)Tek elemanlı demet türü
(expr, ...)Demet ifadesi
(type, ...)Demet türü
expr(expr, ...)Fonksiyon çağrısı ifadesi; ayrıca tuple struct’larını ve tuple enum varyantlarını başlatmak için de kullanılır

Tablo B-9, süslü parantezlerin (curly brackets) kullanıldığı bağlamları gösterir.

Tablo B-9: Süslü Parantezler (Curly Brackets)

BağlamAçıklama
{...}Blok ifadesi
Type {...}Struct literali

Tablo B-10, köşeli parantezlerin (square brackets) kullanıldığı bağlamları gösterir.

Tablo B-10: Köşeli Parantezler (Square Brackets)

BağlamAçıklama
[...]Dizi (Array) literali
[expr; len]expr’nin len kadar kopyasını içeren dizi literali
[type; len]type’ın len kadar örneğini içeren dizi türü
expr[expr]Koleksiyon (Collection) indeksleme; aşırı yüklenebilir (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Koleksiyon indekslemesinin koleksiyon dilimlemeymiş (slicing) gibi davranması, indeks olarak Range, RangeFrom, RangeTo veya RangeFull kullanımı